我正在寻找用c ++编写的简单解释器代码。理想情况下,它不会比具有变量赋值的表达式求值程序复杂(对于内存管理代码)。
我的理由是我正在通过现代编译器设计工作,目标是能够为V8 javascript引擎等解释型语言引擎做出贡献。但是,到目前为止,所有这本书的代码都是用C语言编写的,我希望看到在这种情况下为C ++实现的设计实践,特别是内存管理模型,以及一般的词法分析器/解析器/等的结构。 / p>
我知道编写的代码并不多,这是基本的,并且C ++不是传统上倾向于编写解释器的语言(特别是在开源世界中),但我希望有人在研究之前这个,至少可以指向我个人的Git存储库。
我一直在寻找这种代码大约一个星期,但我能找到的唯一代码太复杂了,不能在这个阶段被我理解。
答案 0 :(得分:2)
我正在寻找用c ++编写的简单解释器代码。理想情况下,它不会比具有变量赋值的表达式求值程序复杂(对于内存管理代码)。
您是否阅读过The C++ Programming Langauge?
在第6章中,它有一个很简单的recursive descent parser的例子。是的,它是具有变量赋值的表达式赋值器。
答案 1 :(得分:1)
LLVM Kaleidoscope教程具有您需要的许多基础知识:体面的惯用语C ++ - ish lexing and parsing,中间表示处理等。
或者,如果您正在寻求真正的核心C ++体验,您可能需要查看Boost::Spirit,有很多示例,从简单的表达式求值程序到复杂的语法。