c++ - 是否有适用于 ANTLR 的 C++ 语法文件?

标签 c++ antlr lexer

是否有任何现有的 ANTLR C++ 语法文件?

我正在寻找 lex,而不是解析一些 C++ 源代码文件。

我查看了 ANTLR grammar page看起来有一个由 Sun Microsystems 创建的列表 here .

不过,它似乎是一个生成的Parser。

谁能给我指出 C++ ANTLR 词法分析器或语法文件?

最佳答案

C++ 解析器很难构建。

我无法谈论使用 ANTLR 的 C++ 语法的经验。 Here I discuss我通过阅读附在我在 ANTLR 网站上看到的注释所学到的东西;本质上,作者产生了一个不完整的语法。那只是针对 C++98 的。我已经有一段时间没看过了;可能还有其他人。

我们的 DMS Software Reengineering Toolkit有一个robust C++ front end .

词法分析器处理 ANSI、GCC3、MS Visual Studio 2008 的所有问题,包括大精度 float 等。

[编辑:12/2011。现在处理 C++11 和 OpenMP 指令]

[编辑:3/2015:现在在 GCC 和 MS 变体中处理 C++14。 See some parse trees here on SO ]

“仅仅”拥有一个解析器实际上并不是很有用。除了“只是解析”之外,我们的前端将构建 AST,构建准确的符号表(对于 C++,这非常难以做到),执行函数局部流分析,并允许您执行程序转换等。请参阅Life After Parsing .

[编辑:5/2019:现在处理 ANSI、GCC 和 MS 变体中的 C++17。跨编译单元完成名称和类型解析。用于自动化large scale God-class refactoring/splitting跨越 3000 个编译单元的系统。]

关于c++ - 是否有适用于 ANTLR 的 C++ 语法文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2329558/

相关文章:

c++ - 关于 const_cast<> 的行为

c++ - C++ boost lambda 和 == 运算符的问题

antlr - 在范围和语法错误中使用 float ?

javascript - Angular.js : use color code in $watch

regex - 多行 Flex 模式定义

c++ - 将集合转换为 vector 的 vector

c++ - OpenCV - 套接字接收到失真图像

parsing - 以 Go 为目标匹配 ANTLR4 中任何可打印的类字母字符

antlr - 使用 Antlr3 匹配词位变体

bison - 我应该如何处理 Flex 词法分析器中的词法错误?