我正在考虑为一个简单/基本的自定义语言(perl / C之类)构建解释器的本科项目。如果有人能指出我正确的方向开始,我会很高兴。我发现的大多数书籍/资源都是关于编译器的理论实现。有没有针对口译员的资源?我正在考虑用C ++实现它,但对解释器设计的主题知之甚少,所以任何指向书籍/参考的指针都将受到赞赏
答案 0 :(得分:3)
源代码的解析在编译器和解释器之间没有太大差别。这就是大多数关于编译器的教科书的内容。
答案 1 :(得分:2)
现在有一些很好的工具可以实现自定义语言。
您可能希望在Eclipse Modeling Package(http://www.eclipse.org)或MPS(http://www.jetbrains.com/mps/)中签出Xtext,这是免费提供的IntelliJ语言工作台。
两者都允许您创建语言并提供工具以从源和工具生成代码以帮助创建代码。
它们还创建抽象语法树,可以直接操作,即执行。然后你有一名翻译。
经典的方法是使用bison / yacc作为词法分析器,分别是解析器,目前许多新工具都可以像antlr一样使用。然后,解析器的输出再次是抽象语法树,可以从中解释或生成代码。
答案 2 :(得分:1)
An Incremental Approach to Compiler Construction - 它是关于创建编译器的,但它可能是一个很好的起点,可以从中找到引用。
答案 3 :(得分:1)
我在Uni写了一个解释器来读取和转换逻辑表达式。用C,Lexx和Yacc写的,老派的Unix和C程序员似乎都在发誓。一旦掌握了它们,它就会非常强大,但我会说,学习曲线相当陡峭。