0

作成されたプログラミング言語で書かれた外部ファイルを読み込んで実行する必要があります。言語の例を次に示します。

[while
   [x-is-larger-than 300]
   [seq
      [command1]
      [command2]
   ]
]

コマンドや条件ごとに異なるクラスを使用することを考えていました。

私たちの質問は、これらのコマンドをどのように順番に読み取って実行するかです。

ありがとう!

4

2 に答える 2

2

すべてのコマンドをスタック/リストに配置します

したがって、次のようになります。

6: ]
5: ]
4: [command2]
3: [command1]
2: [seq
1: [x-is-larger-than 300]
0: [while

したがって、「While」を読んだ場合....そのスタック位置を保存して、それを実行します...

  1. 0 -> 開始
  2. 1 -> x が 300 より大きい ?
  3. 2 -> if 2. シーケンス開始 else スタックをクリア
  4. 3 -> 到達するまでコマンドを実行
  5. 4 -> 保存されたスタック位置 (0) から開始 -> 1 から開始。

それが私がすることです。コマンドをコードに入れる (解析する) のはあなた次第です! ;)

于 2012-05-09T10:18:45.363 に答える
2

強くお勧めします

  1. 発明された言語の文法を書く
  2. パーサージェネレーターを使用して言語のパーサーを生成する

その後

  1. パーサーを使用して、特定のプログラムを解析します。
  2. AST を直接トラバースしてプログラムを実行する
    か、
    ステートメントごとに解釈しやすいシーケンシャル プログラムに AST をコンパイルします。
于 2012-05-09T10:08:07.703 に答える