3

別の Forth で、インタープリターをカスタマイズするにはどうすればよいですか?

たとえば、SP-Forth では、インタプリタは常にスタックの内容を書き込み、出力する前に常に CR/LF を作成します。

1 2 3
 Ok ( 1 2 3 )
.s
1 2 3  Ok ( 1 2 3 )

を見たいのですが:

1 2 3  ok
.s 1 2 3  ok

そして一般的に、次のような新しいデータ入力を定義できるようにしたいと思います

4-3i
{1,2,3,4,5}

次に、インタープリターは、拡張機能で定義したとおりにデータを保存する必要があります。また、エラーが発生した場合は、ソフト スタックと変数をリセットしたいと思います。

何か案は?

4

1 に答える 1

4

さまざまな Forth システムには、さまざまなカスタマイズ方法があります。OKSP-Forth では、 vectorに対して別のアクションを定義できます。たとえば、データ スタックの状態を出力しないようにするには、次のようにします。

: OK2 ( -- ) STATE @ IF EXIT THEN ."  ok" CR ;
' OK2 TO OK
\ see the original definition in src/compiler/spf_translate.f

ただし、この CRLF は入力したテキストの一部であるため、Windows コンソール アプリケーションで "ok" の前に CRLF を回避することは困難です。

新しいデータ形式に関しては、Recognizers RfD があります。一部の Forth システムでは実装されていますが、SP-Forth ではまだ実装されていません。

SP-Forth では、NOTFOUNDメカニズムを使用してカスタムの単語形式 (単語インタープリター) を追加できます。

于 2016-02-17T21:01:40.793 に答える