トップ 一覧 Farm 検索 ヘルプ RSS ログイン

Forthを作ってみる2 / 対話環境を作る2の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!! コンソール入力はどう実行するか?

forthを起動し、
 2 3 + .

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

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

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

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

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

そこで、一旦ワード化し、中間コードに落としてから処理する。
*コンソールからの入力は専用のワードに登録する
*その後、そのワードを実行する

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

[[戻る|Forthを作ってみる2]]  [[前へ|Forthを作ってみる2 / 対話環境を作る]]  [[次へ|Forthを作ってみる2 / 対話環境を作る3]]
[[戻る|Forthを作ってみる2]]  [[前へ|Forthを作ってみる2 / 対話環境を作る]]  [[次へ|Forthを作ってみる2 / 構文解析を作る]]

:Amazonリンク:[Portable Forth|http://www.amazon.co.jp/gp/product/6131009996/ref=as_li_ss_tl?ie=UTF8&tag=moi0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=6131009996]

{{adsence}}