C#的编译器设计——前向引用

标签 c# compiler-construction forward-reference

在像c#这样的前向引用语言中,编译器是如何处理的?编译器运行的步骤是什么?

最佳答案

允许或不允许前向引用的主要区别是使用单程编译器还是多程编译器。当然,要处理前向引用,您必须检查符号定义并在AFTER 生成您正在编译的源代码的完整抽象语法树后进行类型检查。

所以没有问题,当你第一次找到前向引用时,你只需要相信它稍后会被定义(你可以在符号表中将其标记为未决)然后当你找到实际定义时,你会在符号中细化符号对象表。

在你可以对其进行类型检查或检查某些符号是否仍然未决之后(因此没有真正的定义,你可以引发语义错误)。

关于C#的编译器设计——前向引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1653284/

相关文章:

c#从列表中的字段中获取列表

C++ VS2010 编译器不使用 'push' 进行简单的函数调用

compiler-construction - 使用程序进行短路评估

scala - Scala 有没有通用的内存方法?

c# - Entity Framework - 无法加载指定的元数据资源

c# - 给出 json 作为响应,但不知道如何解析它

recursion - Angular2递归组件

reactjs - ref 在事件处理程序中没有值

c# - 如何从 IQueryable 获取计数

VLIW 架构的 GCC 编译器基础架构