内部構造について。
変数
以前はグローバル変数がたくさんあったが、なるべく局所化してみる。関数が必要とする値は、なるべく引数として渡す。
構造体
スタックやワード・変数の管理テーブルを構造体として定義する。
ワードの処理
ワードを切り出したら、即座に対応する処理ルーチンを呼び出せるか?
例えばifワードは、分岐先が確定していないと分岐先にジャンプすることが出来ない。つまり、対話環境でそのワードが入力されても、それだけで処理を行うことが出来ないワードである。
そこで、入力→コンパイル→実行とするために、バッファを用意する。
内部インタプリタ
色々な方式があるが、コールスレッディングを用いる。C言語で作るときは、これが一番互換性がある。
構文解析
以前作った関数parse()は、if〜elseの嵐だったので、もう少しスマートにする。順番に文字列を比較することは、変わらない。
- Amazonリンク
- 言語設計者たちが考えること