【问题标题】:Is there a working C++ grammar file for ANTLR?是否有适用于 ANTLR 的 C++ 语法文件?
【发布时间】:2010-02-24 21:10:54
【问题描述】:

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

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

我查看了ANTLR grammar page,似乎有一个由 Sun Microsystems here 创建。

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

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

【问题讨论】:

    标签: c++ antlr lexer


    【解决方案1】:

    C++ 解析器很难构建。

    我无法谈及使用 ANTLR 的 C++ 语法的经验。 Here I discuss 我通过阅读我在 ANTLR 网站上看到的笔记所附的笔记学到了什么;实质上,作者产生了一个不完整的语法。这仅适用于 C++98。我已经有一段时间没有看了;可能还有其他人。

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

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

    [编辑: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。跨编译单元完成名称和类型解析。用于跨 3000 个编译单元的系统自动化 large scale God-class refactoring/splitting。]

    【讨论】:

    • 我查看了您的网站,似乎您有一些价格合理的酷工具,但您的网站在结构和外观上都可以做一些工作。
    • @Andre:欢迎您提出任何建设性意见;我们总是对改进感兴趣。请发邮件至“info@semanticdesigns.com”。
    • 您的项目与Clang 相比如何,您所说的都是免费的?我在开玩笑,但仍然对您的回答感兴趣!
    • 如果你想要的只是preprocessed C++ 的解析器、那个C++ 的树构建器,以及那个AST 上的不可组合的过程转换,那么Clang 非常好而且免费。如果您想解析 C++ retaining 预处理器指令,应用程序完成的任意转换字符串或表面语法重写(请参阅semanticdesigns.com/Products/DMS/DMSRewrites.html),或者您想以同样的方式处理许多其他语言,DMS 是比 Clang 更有效。请参阅 semanticdesigns.com/Company/Publications/WCRE05.pdf 了解我从未见过有人尝试使用 Clang 的任务。
    • 对于我认为 Clang 会遇到困难的 DMS 的最新应用,请参阅关于上帝类的自动重构的讨论:stackoverflow.com/a/56081753/120163
    猜你喜欢
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 2010-11-18
    • 2018-06-09
    • 1970-01-01
    • 2010-12-08
    相关资源
    最近更新 更多