我知道这可能是一个广泛的问题(没有具体的代码供您查看),但我希望我能对要做什么或如何解决问题有所了解。
为简单起见,假设我正在编写的编译器执行以下三个步骤:
- 解析(并绑定所有变量)
- 类型检查
- 代码生成器
此外,我正在为其构建编译器的语言希望支持后期分析/后期绑定(即,它有一个接受字符串的函数,该函数将在运行时作为一段源代码编译和执行)。
现在在解析阶段,为了上述函数的唯一好处,我需要保留一段上下文直到运行时(因为它需要在该上下文中解析和类型检查它的参数)。
那么问题来了,我该怎么做呢?其他编译器是做什么的?我是否应该将上下文对象序列化到磁盘(它的代码生成)并在运行时恢复它或其他什么?
谢谢