我知道有其他关于编译器/解释器技术的问题以及非常好的代码可以学习,例如IronPython和Jurassic。
对我来说,从源代码构建AST(抽象语法树)并编写自上而下的解析器(目前我更喜欢编写而不是使用代码生成工具)是很清楚的。
大多数我正在尝试学习的源都在作为解释器使用时,使用Reflection.Emit之类的API动态编译程序。
现在我想知道构建一个真正的解释器的最佳实践,它不会将源代码编译为.NET VM。
一旦我获得了AST,如何执行代码?我应该使用解释器或访问者设计模式吗?还是做一些不同的事情?什么是最佳或规范的方式?
我知道已经有一个类似的问题,但如果可能的话,我更喜欢更多关于.NET/C#实现的信息。
问候,Giacomo
对我来说,从源代码构建AST(抽象语法树)并编写自上而下的解析器(目前我更喜欢编写而不是使用代码生成工具)是很清楚的。
大多数我正在尝试学习的源都在作为解释器使用时,使用Reflection.Emit之类的API动态编译程序。
现在我想知道构建一个真正的解释器的最佳实践,它不会将源代码编译为.NET VM。
一旦我获得了AST,如何执行代码?我应该使用解释器或访问者设计模式吗?还是做一些不同的事情?什么是最佳或规范的方式?
我知道已经有一个类似的问题,但如果可能的话,我更喜欢更多关于.NET/C#实现的信息。
问候,Giacomo