インタプリタプログラミング言語を開発しました。これはCに強く基づいています。問題は、foreach
ディレクティブを追加したいのですが、その方法がわかりません。
パーサーとレクサージェネレーターとしてBisonとFlexを使用しています。
インタプリタプログラミング言語を開発しました。これはCに強く基づいています。問題は、foreach
ディレクティブを追加したいのですが、その方法がわかりません。
パーサーとレクサージェネレーターとしてBisonとFlexを使用しています。
文法では、次のような式が必要です。
foreach := foreach ( name in name ) { statements }
これを解析すると、最初に変数を割り当てる追加のステートメントを使用して、ASTのwhileループに直接変換できるはずです。
これは私にはそれを行う最も簡単な方法のように思えますが、おそらく複数の反復可能なデータ型(たとえば、リストと配列)には制限があります。この場合、次の要素を取得するための一貫した方法を持つように、すべての反復可能オブジェクトを統合することを検討することをお勧めします。