トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

Forthを作ってみる2 / 対話環境を作る2

コンソール入力はどう実行するか?

forthを起動し、

2 3 + .

と入力したとき、どのように処理するか?

ひとつは、切り取ったトークンを片っ端から処理する方法がある。

  • '2'が来たらスタックにプッシュする
  • '3'が来たらスタックにプッシュする
  • '+'が来たらスタックにプッシュされた2つの値をポップ・加算・加算値をプッシュする
  • '.'が来たらスタックからポップした値を表示する

この方法を用いたとき問題になるのは、分岐が発生したときである。たとえば、

if ." OK" else ." NG" then

だと、'if'が来たらスタックトップの内容で次に行う処理を選択する。しかしワードをその場で処理する方法だと、まだ飛び先が決まっていないこの時点では処理できない。

そこで、一旦ワード化し、中間コードに落としてから処理する。

  • コンソールからの入力は専用のワードに登録する
  • その後、そのワードを実行する

こうすれば、分岐先が決まらない問題を解決できる。

戻る 前へ 次へ

Amazonリンク
Portable Forth