这两种情况都是可能的,您需要更多地描述您的语言,看看您是否真的需要将该功能添加到您的代码生成器中,或者因为不必要而跳过它,并避免在设计编程语言这个困难而有趣的主题上做额外的工作.
您是“代码生成器”一个程序,它以编程语言(可能是小语言)作为输入代码接收并以另一种编程语言(可能是小语言)输出代码吗?
这个工具通常被称为“翻译器”。
你是“代码生成器”一个程序,它接收一种编程语言作为输入并像编程语言一样输出汇编程序/字节码?
这个工具通常被称为“编译器”。
注意:“pile”是“stack”的同义词。
通常是 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)”将其转换为运算符或函数,类似于您的问题。
祝你好运。