- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!! コンソール入力はどう実行するか?
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}}