在像c#这样的前向引用语言中,编译器是如何处理的?编译器运行的步骤是什么?
最佳答案
允许或不允许前向引用的主要区别是使用单程编译器还是多程编译器。当然,要处理前向引用,您必须检查符号定义并在AFTER 生成您正在编译的源代码的完整抽象语法树后进行类型检查。
所以没有问题,当你第一次找到前向引用时,你只需要相信它稍后会被定义(你可以在符号表中将其标记为未决)然后当你找到实际定义时,你会在符号中细化符号对象表。
在你可以对其进行类型检查或检查某些符号是否仍然未决之后(因此没有真正的定义,你可以引发语义错误)。
关于C#的编译器设计——前向引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1653284/