Forth

Forth Programmer's Handbook (3rd Edition) 届いた

amazon.com で注文していた http://www.amazon.com/Forth-Programmers-Handbook-Elizabeth-Rather/dp/1419675494/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1210036429&sr=8-1 が届いた。 注文したのが4/18。到着予定は5/15だったけど早く着いたんだ。 どうやら2…

小さな Forth もどきを作ってみた

(def-primitive :|create| のことろで codes-index を 0 に設定してなかったので、2回目以降の呼び出しが何もせず終っていた。 修正した。(2005/05/05) 今日はちょっと初心にかえって小さな Forth もどきを作ってみた。 実装は Common Lisp で、参考にしたの…

Forth で無名関数の再帰

Perl で JS の arguments.callee 的なことしようと思ってハマった - IT戦記 の件を Forth で。Forth なら recurse がある。 :noname dup if dup . 1 - recurse else . then ; ok 10 swap ok .s <2> 10 47312420583688 ok execute 10 9 8 7 6 5 4 3 2 1 0 ok …

Stacker

http://llvm.org/docs/Stacker.html Stacker という Forth ライクな言語を作成する LLVM のドキュメント。後半は "See projects/llvm-stacker/lib/compiler/StackerCompiler.cpp" という感じでかなり省略されているが、趣旨からするとソースを見てでいい。 …

例外処理までプリミティブじゃないのか

Forth では例外処理までプリミティブではなく、Forth 自身で書けてしまう。 リターンスタックをいじれるといろんなことができるのか。 普通の言語じゃ関数の戻り先なんていじれないもんな。 Forth は本当に自由な言語だ。jonesforth.f より。 : EXCEPTION-MA…

[ ]

Forth では [ ] はすぐに実行する。コロン定義中でワードをコンパイルするのではなく実行したい時に使う。Joy や Factor では [ ] はすぐに実行しない。Lisp の '( ) と似たようなもの。意味が逆になっているのか。 Zui では Joy や Factor と同じにしよう。…

jonesforth のコロン定義の動作

: では次の動作 WORD ( ワード名を取得) CREATE ( 辞書のエントリを作成) LIT DOCOL , ( DOCOL を追加) LATEST FETCH HIDDEN ( ワードを辞書から引けなくする) ] ( コンパイルモードに) EXIT ( : からぬける) ; では次の動作 LIT EXIT , ( EXIT をワード定義…

jonesforth のインタプリタの動作

http://www.annexia.org/forth:jonesforth のインタプリタの動作。 ワードをパース ワードを辞書でひく 辞書にあった場合 IMMEDIATE なら、ワードを実行 IMMEDIATE ではない場合 実行中なら、ワードを実行 コンパイル中なら、ワードをコンパイル 辞書になか…