両方の状況が考えられます。コード ジェネレーターにその機能を本当に追加する必要があるかどうかを確認するために、言語について詳しく説明する必要があります。それとも不要な場合はスキップし、プログラミング言語の設計に関するこの困難で興味深いトピックで余分な作業を避ける必要があります。 .
「コードジェネレーター」は、プログラミング言語(おそらく小さなもの)で入力コードとして受け取り、別のプログラミング言語(おそらく小さなもの)でコードを出力するプログラムですか?
このツールは通常「トランスレータ」と呼ばれます。
「コードジェネレーター」とは、プログラミング言語を入力として受け取り、プログラミング言語のようなアセンブラ/バイトコードを出力するプログラムですか?
このツールは通常「コンパイラ」と呼ばれます。
注: 「パイル」は「スタック」の同義語です。
通常、AST には操作のタイプまたは関数呼び出しが格納されます。例、c:
...
int a = 3;
int b = 5;
float c = (float)(a * b);
...
最後の行は、次のような AST を生成します (他の行では AST をスキップします)。
..................................................................
..................................................................
......................+--------------+............................
......................| [root] |............................
......................| (no type) = |............................
......................+------+-------+............................
.............................|....................................
.................+-----------+------------+.......................
.................|........................|.......................
...........+-----+-----+....+-------------+-------------+.........
...........| (int) c |....| (float) (cast operation) |.........
...........+-----------+....+-------------+-------------+.........
..........................................|.......................
....................................+-----+-----+.................
....................................| (int) () |.................
....................................+-----+-----+.................
..........................................|.......................
....................................+-----+-----+.................
....................................| (int) * |.................
....................................+-----+-----+.................
..........................................|.......................
..............................+-----------+-----------+...........
..............................|.......................|...........
........................+-----+-----+...........+-----+-----+.....
........................| (int) a |...........| (float) b |.....
........................+-----------+...........+-----------+.....
..................................................................
..................................................................
「(float)」は、質問と同様に、演算子または関数のようにキャストされることに注意してください。
幸運を。