作者回复: 我最近注意到了这个问题。在提交代码时没有做全面的测试。主要是影响到了函数参数的解析。我会这两天找时间修复! Aaaaaaaaaaayou提出的问题,是一个做语义分析时很关键的问题,也就是建立符号表和引用消解的时机问题。正确的方法,是一边建立输入符号,一边做应用消解,否则引用消解就会出错。比如: {//外部Scope int a = 1; { //内部Scope a = 2; //这里的a引用的是外部Scope的a int a = 3; a + b; //这里的a引用的是内部Scope的a } } 这个点看似很小,但对语义分析程序的设计很关键。在《编译原理实战课》中,我还特意分析了Java语言的编译器是怎么处理输入符号表和引用消解的。 感谢你的提醒!
作者回复: 抛砖引玉! 你有兴趣的话,可以顺着课程的思路,继续往深入探索!