2 part forth (907レス)
2 part forth http://mevius.5ch.net/test/read.cgi/tech/1073673931/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
207: デフォルトの名無しさん [] 2005/04/23(土) 22:41:36 Forthって予約語とか命令とかってどれくらいあるの? 簡単なスタック計算機なら作ったことあるんだけど、どれくらい拡張するとForthになるんだろう。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/207
208: デフォルトの名無しさん [] 2005/04/23(土) 22:44:52 スタック計算機って、おめえ、1 2 + とかだろ? そんなんじゃプログラミング言語とはいえねえわな。 その形式で制御文とか関数定義考えたこたあるか? http://mevius.5ch.net/test/read.cgi/tech/1073673931/208
209: デフォルトの名無しさん [] 2005/04/23(土) 22:45:20 アプリってなんだ http://mevius.5ch.net/test/read.cgi/tech/1073673931/209
210: デフォルトの名無しさん [] 2005/04/23(土) 22:48:00 >>208 > そんなんじゃプログラミング言語とはいえねえわな。 もういいからそこらへんで冷たくなってろ http://mevius.5ch.net/test/read.cgi/tech/1073673931/210
211: デフォルトの名無しさん [sage] 2005/04/23(土) 23:02:44 >208 数字が出たら、素直にスタックに積んで、 トークンが出たら、変数領域を参照して、あったらスタックに積んで、 なかったら、命令領域を参照してあったら、命令にスタックそのものを渡して計算させる。 命令と変数は基本的にstd::mapを使ってコールバックの形などで実現する。 whileとかの解析で思考が詰まってたところだよ。 いっその事、字句解析機もコールバックに渡してしまおうとおもってた。 字句解析には、BOOST::tokenizerを使う。 スタックに積む形式はBOOST::anyあたりがいいかなーと、バリアント変数好きの自分は考えていた。 辞書作成(実質サブルーチン)はちょっとてまかかりそうだけど、evalっぽいの実装すればいけそうだとか考えてた。 とかとか、漠然と考えたことはあるんだけど、実行効率は落第点だろうね。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/211
212: 211 [sage] 2005/04/23(土) 23:07:40 素材はもちろんC++ アプリにくっつけて、Forthスクリプトもいいかなーとか妄想してる。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/212
213: デフォルトの名無しさん [sage] 2005/04/23(土) 23:30:54 そして誰もいなくなった。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/213
214: デフォルトの名無しさん [] 2005/04/23(土) 23:40:47 FORTH使えねえ・・ http://mevius.5ch.net/test/read.cgi/tech/1073673931/214
215: デフォルトの名無しさん [sage] 2005/04/23(土) 23:55:35 がんばれ http://mevius.5ch.net/test/read.cgi/tech/1073673931/215
216: デフォルトの名無しさん [] 2005/04/24(日) 00:04:53 なんでもちろんC++なのかねえ。 普通アセだろ?こんなの http://mevius.5ch.net/test/read.cgi/tech/1073673931/216
217: デフォルトの名無しさん [sage] 2005/04/24(日) 00:45:22 土日らしいな http://mevius.5ch.net/test/read.cgi/tech/1073673931/217
218: デフォルトの名無しさん [sage] 2005/04/24(日) 08:22:03 >>211 FORTHへの招待 ,Harry Katzan,Jr. 池野信一監訳 近代科学社 1600円 ISBN4-7649-0082-3 C3050 読んでみればFORTHの実装がどれだけお手軽か分かる。 絶版なんでOPACで持ってる図書館を探してくれ。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/218
219: 211 [sage] 2005/04/24(日) 15:41:48 >>216 アセンブラできません。(笑 趣味グラマなんで。 >>218 ずいぶん古い文献のようですね。1984年か。 僕、2歳かな・・・。なんだか感慨深いですね。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/219
220: 211 [sage] 2005/04/24(日) 16:48:33 地元の図書館の検索ページ行ってみたが、ないな。 僕の手が届く(自作できそうな)処理系ってbarinf*ckとforth位なんだよなー。 構文解析作るの面倒だし、うーん。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/220
221: デフォルトの名無しさん [sage] 2005/04/24(日) 17:02:19 >>220 県内の図書館は大抵連携していて他館のも借り出せるから、 他の図書館も探すべし。 (県内図書館の横断検索システムが大抵ある。) 最悪でも国会図書館から地元の図書館へ借り出せる。 (ただし館内閲覧のみ) http://mevius.5ch.net/test/read.cgi/tech/1073673931/221
222: デフォルトの名無しさん [sage] 2005/04/24(日) 19:52:47 >>221 詳しいんだね。 それで、県の横断検索でもみつかったけど大学の図書だ。 こういうのも横断して借りれるのかな。ちょっと躊躇してるけど、試してみようかな。 Thx! #しかし便利だな。この検索方法。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/222
223: デフォルトの名無しさん [sage] 2005/04/24(日) 21:05:06 Forthなんか自作しても誰も褒めてくれないよ Lispにしとけば? http://mevius.5ch.net/test/read.cgi/tech/1073673931/223
224: デフォルトの名無しさん [sage] 2005/04/25(月) 18:34:25 別に人に褒めてもらうために処理系作るわけじゃないし。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/224
225: デフォルトの名無しさん [sage] 2005/04/25(月) 21:02:47 Forthなんか自作しても誰も使わないよ Lispにしとけば? http://mevius.5ch.net/test/read.cgi/tech/1073673931/225
226: デフォルトの名無しさん [sage] 2005/04/25(月) 21:20:05 やけに伸びてると思ったら‥‥。 >>211 >whileとかの解析で思考が詰まってたところだよ。 FORTHの場合、多くの制御構造はbranchと0branch (無条件相対ジャンプと条件ジャンプ)命令を実装したら FORTH自身で作れる。 >>218 の本とか読んでみなされ。 あと、遠い昔にForth(というかMops+自作Lib)で作った 「メモ帳アプリもどき」のソースを晒しときますね。 ttp://gdsz.hp.infoseek.co.jp/cgi-bin/yukiwiki/yukiwiki.cgi?mycmd=read&mypage=mNote http://mevius.5ch.net/test/read.cgi/tech/1073673931/226
227: 211 [sage] 2005/04/26(火) 20:43:23 ttp://www-lab.ee.uec.ac.jp/text/forth/man/man.html こういうの発見。 意外とC並みのことができそうな感じ。 でも、スクリプトとしてはあんま必要なさそうなのが結構あるなー。 一つのスタックにdoubleとintを混在させる方法が結構面倒そうだ。 やっぱ、Boost::anyかなぁ・・・。any使っとくとその後の拡張が楽そうだな。(Win方面のハンドルとか。) うーん。 トンカチを持ってる人はすべての問題が釘に見えるっていうのがあるけど、 なんかそんな感じに陥っていそうな感じだ。 どうしよ。 >>226 オブジェクト指向のforthかな?? マニュアルないから、パラメータの意味がわかりにくいな。(引数とかとか。) でも、ちゃんとアプリできてるのはすごいと思う。 適当なOS向けの拡張ってどうやってやるんだろう。 Boost::anyにハンドル類を突っ込むしか思い当たらない・・・。 スタック何本いるんだろ。3本かな・・・?? というか、キューとかにしちゃってもいいのか?? http://mevius.5ch.net/test/read.cgi/tech/1073673931/227
228: デフォルトの名無しさん [sage] 2005/04/28(木) 19:20:51 ホンダガラッタ ヘンダガラッタ フンダガラッタ フン!フン! エッグマンが現れた。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/228
229: デフォルトの名無しさん [sage] 2005/04/28(木) 23:40:24 > 一つのスタックにdoubleとintを混在させる方法が結構面倒そうだ。 実数は実数スタックに積むんじゃね? http://mevius.5ch.net/test/read.cgi/tech/1073673931/229
230: デフォルトの名無しさん [sage] 2005/04/29(金) 12:19:01 はぁ?ナニ言ってんのおまえ http://mevius.5ch.net/test/read.cgi/tech/1073673931/230
231: デフォルトの名無しさん [sage] 2005/04/29(金) 13:09:33 >>229は正しい事言ってるんだけど。FORTHとして。 FORTHの言語仕様をろくに確認しないうちに、 思い込みで作り始めてる香具師がいるわけで。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/231
232: デフォルトの名無しさん [sage] 2005/04/29(金) 18:05:54 >>231=229 はぁ?ナニ言ってんのおまえ http://mevius.5ch.net/test/read.cgi/tech/1073673931/232
233: デフォルトの名無しさん [sage] 2005/04/29(金) 20:55:41 このスレはもうだめぽ。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/233
234: デフォルトの名無しさん [sage] 2005/05/01(日) 01:45:08 >>227 C言語レベルでオゲーなら、↓こんな所からコードを読んでみるのは、いかがでせぅか? T4th http://eshop.advanet.co.jp/formmail/t4th.html GForth http://www.jwdt.com/~paysan/gforth.html GikoForth http://gikoforth.s13.xrea.com/gikoforth.html T4thは正確にはモドキらしいけど、日曜プログラミング程度で突付ける程度の気楽さですよ。 > 適当なOS向けの拡張ってどうやってやるんだろう。 ぱっと思いつくのは、Win32 APIのLoadLibraryとGetProcAddressを呼び出す ワード(命令)を用意すれば いいんじゃないかな?と。 >というか、キューとかにしちゃってもいいのか?? STLのstackも確かqueueの特殊系だったので、それで良いと思いますよ。 (上のはCで実装しているけど、まぁ似たような感じだし) http://mevius.5ch.net/test/read.cgi/tech/1073673931/234
235: 227 [sage] 2005/05/01(日) 04:00:31 先日brainf*ckを自作してみたら、大体C++のクラスで150行位になった。 僕が保守できる限界がこれ位なだよなー。結構ヘタレ。 >>234 thx! あまり長いソースはよんだことないからなー。 1000行はちょっと長いね。まーいいか。 地道によんでみます。 >ぱっと思いつくのは、Win32 APIのLoadLibraryとGetProcAddressを呼び出す >ワード(命令)を用意すれば いいんじゃないかな?と。 うまいまわし方はわからんけど、簡単そうですね。 >というか、キューとかにしちゃってもいいのか?? どうしてこんなこといっちゃったんだろう。 意図忘れちゃった。(汗 http://mevius.5ch.net/test/read.cgi/tech/1073673931/235
236: 227 [sage] 2005/05/02(月) 21:43:03 http://www.uploda.org/file/uporg88200.lzh スタック電卓作ってみました。 形にはなってない感じですが・・・。 とりあえず、ソースはまだカオス化してないはずなので興味があるなら読んでみてください。 変数等は使えません。辞書も無理。 拡張は、クラスStackCalcのenumのTokennumを必要数増やして、 メソッド、Doの中にあるstd::stringのtoken[]に命令文を追加して、 switch文に新しい数字を増やして、 新しいメソッドを書くだけ。 こんなに簡単。(笑 扱いはMain.cppを見てください。 エラー処理はほぼしてないです。 あー、これをどれだけ拡張すると、forthになるのやら。 制御構文がネックだなー。Boost::tokenizerはバックして解析できないみたいだし・・・。 あと、ファイルは二日ほどで消える予定です。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/236
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 671 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.009s