我想知道是否有人知道可以在 Java 中以编程方式使用的现有 C++ 解析器/代码模型。我正在寻找类似于 Eclipse CDT 的东西,它可以用作 Java 的库(并且不依赖于 Eclipse)。提前致谢。
3 回答
您不想构建自己的 C++ 解析器。它会杀了你。
您已经了解 Eclipse CDT 项目:www.ibm.com/developerworks/library/os-ecl-cdt3/index.html AFAIK,该解析器的边缘有点模糊。YMMV。优势:在 Java 中(如果您愿意,也可以在 Eclipse 中)。如果您想处理 C++,并在 Java 中完成,这可能是您唯一实际的选择。
还有我们的 DMS Software Reengineering Toolkit C++ 前端: http ://www.semdesigns.com/Products/FrontEnds/CppFrontEnd.html 适用于各种 C++ 方言(ANSI、GNU、MSVC 2005/2008),经测试触发数百万行代码。从您的角度来看的缺点:不是Java。但是如果你真的想分析 C++,那么制定一个你只愿意在 Java 中做的规则可能对你没有最好的帮助。
对于 Lex、Yacc、Antlr、Jack 等解析器生成器,有一些不完整的 LALR 语法。
C++ 有一个不可判定的语法语法,所以 LALR 和 BNR 语法总是不完整的,但只要你不尝试编写 C++ 编译器,它们应该已经足够好了。
JavaCC 有一些 C++ 语法。试试谷歌。