我正在为类似 C 的语言开发编译器,并且在语义分析和代码生成阶段遇到了一些困难。我的问题如下: 1)对于 if 语句,以下是语法:
if (expression) then
statement1;
statement2;
else
statement3;
end if;
现在,在我的目标代码中,它必须是带有 go to 语句的 3 地址代码,所以它应该
look something like:
if (Rx) // Rx is the register where the expression is evaluated and stored
go to X1 //for if part
X2 // for else part;
所以现在,我的问题是,如何生成“转到”语句的地址?
2)这个问题是关于语义分析的:我已经能够为单个函数构建和使用符号表。我应该使用什么方法来构建函数调用的符号表?换句话说,对于不同的词汇级别?我知道这应该以某种方式涉及拥有多棵树。一棵树对应一个功能。但是从程序中间的某个地方指向不同的树的方法是什么?
我是初学者,因此任何建议/想法将不胜感激。