Возможны обе ситуации, вам нужно больше рассказать о вашем языке, чтобы узнать, действительно ли вам нужно добавить эту функцию в генератор кода или пропустить ее, если она не нужна, и избежать дополнительной работы с этой сложной и интересной темой проектирования. язык программирования.
Являетесь ли вы "генератором кода" программой, которая получает в качестве входного кода язык программирования (может быть, маленький) и выводит код на другом языке программирования (может быть, маленький)?
Этот инструмент обычно называют «переводчиком».
Являетесь ли вы "генератором кода" программой, которая получает на вход язык программирования и выводит ассемблер / байт-код, как язык программирования?
Этот инструмент обычно называют "компилятором".
Примечание: «стопка» является синонимом «стопки».
Обычно A.S.T. хранит тип операции или вызов функции. Пример в c:
...
int a = 3;
int b = 5;
float c = (float)(a * b);
...
Последняя строка, генерирует A.S.T. аналогично этому (пропустите A.S.T. для других строк):
..................................................................
..................................................................
......................+--------------+............................
......................| [root] |............................
......................| (no type) = |............................
......................+------+-------+............................
.............................|....................................
.................+-----------+------------+.......................
.................|........................|.......................
...........+-----+-----+....+-------------+-------------+.........
...........| (int) c |....| (float) (cast operation) |.........
...........+-----------+....+-------------+-------------+.........
..........................................|.......................
....................................+-----+-----+.................
....................................| (int) () |.................
....................................+-----+-----+.................
..........................................|.......................
....................................+-----+-----+.................
....................................| (int) * |.................
....................................+-----+-----+.................
..........................................|.......................
..............................+-----------+-----------+...........
..............................|.......................|...........
........................+-----+-----+...........+-----+-----+.....
........................| (int) a |...........| (float) b |.....
........................+-----------+...........+-----------+.....
..................................................................
..................................................................
Обратите внимание, что "(float)" приводит его как оператор или функцию,
похоже на ваш вопрос.
Удачи.