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

时间:2013-04-05 23:12:38

标签: c++ parsing interpreter lexer

我正在寻找用c ++编写的简单解释器代码。理想情况下,它不会比具有变量赋值的表达式求值程序复杂(对于内存管理代码)。

我的理由是我正在通过现代编译器设计工作,目标是能够为V8 javascript引擎等解释型语言引擎做出贡献。但是,到目前为止,所有这本书的代码都是用C语言编写的,我希望看到在这种情况下为C ++实现的设计实践,特别是内存管理模型,以及一般的词法分析器/解析器/等的结构。 / p>

我知道编写的代码并不多,这是基本的,并且C ++不是传统上倾向于编写解释器的语言(特别是在开源世界中),但我希望有人在研究之前这个,至少可以指向我个人的Git存储库。

我一直在寻找这种代码大约一个星期,但我能找到的唯一代码太复杂了,不能在这个阶段被我理解。

2 个答案:

答案 0 :(得分:2)

C ++编程语言

  

我正在寻找用c ++编写的简单解释器代码。理想情况下,它不会比具有变量赋值的表达式求值程序复杂(对于内存管理代码)。

您是否阅读过The C++ Programming Langauge

在第6章中,它有一个很简单的recursive descent parser的例子。是的,它是具有变量赋值的表达式赋值器。

答案 1 :(得分:1)

LLVM Kaleidoscope教程具有您需要的许多基础知识:体面的惯用语C ++ - ish lexing and parsing,中间表示处理等。

或者,如果您正在寻求真正的核心C ++体验,您可能需要查看Boost::Spirit,有很多示例,从简单的表达式求值程序到复杂的语法。