ANTLR是否有可用的C++语法文件?

10

是否存在用于ANTLR的C++语法文件?

我想要对一些C++源代码文件进行词法分析,而不是解析。

我查看了ANTLR grammar页面,似乎有一个由Sun Microsystems创建的已列出的文件在这里

然而,它似乎是一个生成的解析器。

有人能指向C++ ANTLR词法分析器或语法文件吗?

1个回答

1

C++解析器很难构建。

我没有使用过ANTLR的C++语法,因此无法从经验上发表意见。在这里,我讨论了阅读我在ANTLR网站上看到的注释时学到的内容;实质上,作者制作了一个不完整的语法。而且那只是针对C++98的。我已经有一段时间没有看过了,可能会有其他的。

我们的DMS软件重构工具包拥有一个强大的C++前端

词法分析器处理了ANSI、GCC3、MS Visual Studio 2008中的所有垃圾,包括大精度浮点数等。

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

[编辑:2015年3月:现在支持GCC和MS变体的C++14。 在SO上查看一些解析树]

仅有“解析器”实际上并不是非常有用。除了“仅仅解析”之外,我们的前端将构建AST、构建准确的符号表(对于C++来说,这非常难做到),执行函数本地流分析,并允许您进行程序转换等操作。请参见解析后的生活

[编辑:2019年5月:现在支持ANSI、GCC和MS变体的C++17。可以在编译单元之间完成完整的名称和类型解析。曾用于自动化跨3000个编译单元的大规模God-class重构/拆分系统。]


3
我查看了你的网站,似乎你有一些不错的工具,价格也不贵,但是你的网站在结构和外观方面还需要改进。 - Andre Artus
@Andre:欢迎提出任何有建设性的意见,我们一直致力于改进。请发送邮件至“info@semanticdesigns.com”。 - Ira Baxter
你们的项目与 Clang 相比如何?它也可以免费实现你们所说的所有功能。开个玩笑,但我还是很想知道你们的答案! - rubenvb
如果你只需要一个用于预处理的C++解析器,一个用于该C++的树构建器以及对该AST进行不可组合的过程转换,那么Clang非常好且免费。如果您想解析保留预处理器指令的C ++,应用任意字符串的过程转换或表面语法重写(请参见http://www.semanticdesigns.com/Products/DMS/DMSRewrites.html),或者您想以同样的方式处理许多其他语言,则DMS比Clang更有效。请参阅http://www.semanticdesigns.com/Company/Publications/WCRE05.pdf以获取我从未见过任何人尝试使用Clang的任务。 - Ira Baxter
关于DMS的更近期应用,我认为Clang可能会遇到困难,请参见有关上帝类自动重构的讨论:https://dev59.com/oGUq5IYBdhLWcg3wBLs-#56081753 - Ira Baxter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接