这两种情况是可能的,你需要描述你的语言多了,看看你是否真的需要这个功能添加到您的代码生成器,或跳过不必要的,并避免与这个困难和有趣的话题额外的工作设计一种编程语言。
“代码生成器”是一种程序,它以编程语言(可能是小代码)接收输入代码,并以另一种编程语言(可能是小代码)输出代码?
这个工具通常被称为“翻译”。
“代码生成器”是一种程序,它接收一种编程语言作为输入并输出像编程语言那样的汇编/字节代码?
该工具通常称为“编译器”。
注:“堆”是“堆”的同义词。
通常是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 |.....
........................+-----------+...........+-----------+.....
..................................................................
..................................................................
注意“(浮动)”铸就了它像操作员或功能, 类似于你的问题。
祝你好运。
这取决于。涉及'x'的任何表达式是否根据'x'的类型改变行为?你知道这个类型能产生更好的代码吗?等等 – delnan