C ++解析器生成器

时间:2013-03-21 08:07:46

标签: c++ parsing lexer lexical

我正在编写自己的脚本语言,我需要一个软件工具来生成用于解析我的语言的C ++代码。我需要一个词法分析器和一个生成C ++代码的解析器生成器。能够生成Visual C ++ 2010项目对我来说会很好。建议?

4 个答案:

答案 0 :(得分:6)

http://en.wikipedia.org/wiki/Comparison_of_parser_generators

for C / C ++:http://epaperpress.com/lexandyacc/

或者看看:Boost.Spirit:

  

“Spirit是一组用于解析和输出生成的C ++库   使用域特定嵌入式语言(DSEL)实现   表达模板和模板元编程。“

你真的需要新语言吗?也许最好使用一些众所周知的像Lua,Python?

答案 1 :(得分:2)

尝试使用Flex和Bison。它们是很好的词法分析器和解析器生成器,可用于定义新语言。

http://en.wikipedia.org/wiki/Flex_lexical_analyser

答案 2 :(得分:1)

这是一个古老的问题,但仍然可能是相关的:因为我对现有选项不满意,我最近编写了一个模板c ++解析器生成器,它不需要任何外部工具(包括标题和直接在c ++源代码中定义语法。它使用可读的PEG语法,因此不需要单独的lexing步骤。您可以在Github上查看。

答案 3 :(得分:0)

你有两个选择:你是否通过创建一个AST(抽象语法树)来创建自己的解析器,那么这对你来说是一个很好的练习,但它很长很难实现。或者您可以使用开源解决方案,例如ANTLR解析器生成器,它具有C / C ++语法以及预处理器。我从来没有使用过它,所以我不能说它对C ++的解析会有多完整。然后,如果你匆忙,并且想要创建一个好的解析器,你最好使用第二个解决方案