现代C++中的解释器代码?

3
我正在寻找用c++编写的简单解释器代码,最好是用于不超过表达式求值器和变量赋值(用于内存管理代码)这样的东西。
我的理由是,我正在通过《现代编译器设计》一书学习,目标是能够为像V8 JavaScript引擎这样的解释语言引擎做出贡献。然而,该书的所有代码到目前为止都是用C语言编写的,我想在这个背景下看到C ++实现的设计实践,特别是内存管理模型以及一般的词法分析器/解析器等结构。
我知道没有太多这么基础的代码可用,而且C ++不是传统上编写解释器的首选语言(尤其是在开源世界中),但我希望有人曾经做过这方面的工作,并至少可以指向他们的个人Git存储库。
我已经寻找了大约一周这种类型的代码,但我能找到的唯一代码都太复杂了,在这个阶段让我难以理解。

https://code.google.com/p/tiny-js/ - Robert Harvey
请查看AngelCode - Captain Obvlious
http://sourceforge.net/projects/tinyscheme/ - Robert Harvey
到目前为止,我已经看了AngelCode和tiny-js,它们似乎都是相当简单的项目,特别是tiny-js,它专门使用递归下降解析器,这是我在现代编译器设计中所处的阶段。今晚我会看一下tinyscheme,但它听起来也很有可能成为一个候选(tiny-js和tinyscheme都实现了类似JS的语法,这是它们的优点)。如果你回复其中任何一个评论,你就有我的投票 :) - Neurostracted
2个回答

2

C++编程语言

我正在寻找用C++编写的简单解释器代码。理想情况下,它只需更复杂的表达式求值和变量赋值(用于内存管理代码)。

你读过C++编程语言吗?

在第6章中,它有一个很好的例子,是一个简单的递归下降解析器。而且,它也是一个带有变量赋值的表达式求值器。


我并没有看过这本书,说实话我大多数时候都忽略了它,因为它出版的时间太久远了。我是用《C++ Primer Plus》第六版来学习这门语言的。不过我肯定要看看那本书,特别是因为我看到有一本更新的版本涵盖了c++11等内容,将于今年五月份发布。 - Neurostracted

1

LLVM万花筒教程涵盖了许多基础知识:良好的C++风格的词法分析和语法分析,中间表示处理等。

或者,如果你想要一个真正的C++高级体验,可以看看Boost::Spirit,其中有大量的例子,从简单的表达式求值器到复杂的语法。


我将会关注LLVM链接,我一直在阅读有关它的资料(它是C++中实现的主要VM/JIT/编译器之一),但还没有看到具体的内容。至于Spirit,我听说它很棒,如果你能够让它工作起来的话,但实现任何真实世界的东西也相当晦涩难懂和难以实施... - Neurostracted

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接