如何将类型标记的标记转换为解析树?

时间:2009-12-22 20:19:36

标签: c++ compiler-construction parsing

所以我正在用C ++编写一种编程语言。我写了几乎全部内容,除了一点点,我需要把我的标记变成一个解析树。

令牌已经打好了标签并准备就绪,但我不想完成制作自己的解析树生成器的工作。我一直在寻找应用程序来做到这一点,但总是遇到非常复杂或过于热心的应用程序,而且我想把一个令牌类型列表变成一个解析树,仅此而已。提前谢谢!

3 个答案:

答案 0 :(得分:2)

最简单的解析器生成器是yacc(或bison)。

Bison只是一个哈利yacc(即它有更多的选择)。

其中一个也是生成C ++解析器对象(而不是C函数) 只需将以下内容添加到yacc文件中:

%skeleton "lalr1.cc"

答案 1 :(得分:1)

规范解析器生成器称为yacc。有一个名为bison的gnu版本。这些都是基于C的工具,因此它们应该与您的C ++代码很好地集成。有一个名为ANTLR的java工具,我听说过非常好的东西(即它易于使用且功能强大)。请记住,使用yacc或bison,您必须使用他们的语言编写语法。这肯定是可行的,但并不总是那么容易。在LR(k)解析中有一个理论背景是很重要的,这样你就可以理解它意味着什么时候它会告诉你修复你的模糊语法。

答案 2 :(得分:0)

根据您的要求,Boost.Spirit可能是另一种选择。它是模块化的,所以你应该只能使用它的组件。