需要C++;分析器 我需要一个好的、稳定的、可能的、易于使用的C/C++接口的C++解析器库(C是首选)。 我听说CICT是优秀的C++解释器。我可以为此使用它(或它的一部分)吗? 有什么建议吗?
我不知道cint,但我听说人们用它 我也一直在寻找一个好的独立库,但没有找到。请参阅:需要C++;分析器 我需要一个好的、稳定的、可能的、易于使用的C/C++接口的C++解析器库(C是首选)。 我听说CICT是优秀的C++解释器。我可以为此使用它(或它的一部分)吗? 有什么建议吗?,c++,parsing,free,C++,Parsing,Free,我不知道cint,但我听说人们用它 我也一直在寻找一个好的独立库,但没有找到。请参阅: 它既有C++又有C++接口(LbCLANG)。目前只有三个分析器是可以接受的:EDG(广泛用作流行的C++编译器前端)、GCC和微软。显然,微软已经开始在VS2010中为Intellisense使用EDG的解析器 当你看到免费选项时,你几乎被GCC卡住了。不过,它可以生成XML,所以简单的部分就在这里。(通过C++解析标准,即> P> Clang是最新的成熟的选择,具有一个不错的C++ API(但没有C)。E
它既有C++又有C++接口(LbCLANG)。目前只有三个分析器是可以接受的:EDG(广泛用作流行的C++编译器前端)、GCC和微软。显然,微软已经开始在VS2010中为Intellisense使用EDG的解析器
当你看到免费选项时,你几乎被GCC卡住了。不过,它可以生成XML,所以简单的部分就在这里。(通过C++解析标准,即> P> Clang是最新的成熟的选择,具有一个不错的C++ API(但没有C)。Elsa有点过时,没有维护,但仍然是一个可用的选择。两者都可以用作库,也可以用作独立的XML前端。如果您觉得勇敢,那么回答“”中的链接可能会有所帮助。GCC XML和C++已经被提出,这取决于你想要达到的目标是否有意义。 < P>如果你想解析C或C++代码,那么有一些选项: http://students.ceid.upatras.gr/~sxanth/ncc/ 如果要使用C/C++创建解析器,可以尝试: http://dinosaur.compilertools.net/ Lex和Yacc
Flex和Bys< /P> < P>我没有尝试过,但是我认为最好的选择是从一些流行的开源编译器中获取模块,如C++。p>
也许你会在这里找到一些有趣的东西
< p>我们能够解析各种C++方言(ANSI,GCC,MSV),自动构建其节点标记有精确源位置并用任何附近的注释文本修饰的AST,并建立一个完整的符号表。(编辑June: 2013,C++前端已经能够处理C++ 11相当长的时间了)C++前端是建立在我们的通用编译器技术之上的,用于程序分析和转换,旨在支持自定义工具的构建。C++前端包括预处理器,其中预处理器指令可以适当扩展或不适合于任务。它还包括所有讨厌的Koenig查找内容的完整符号构造
作为证明,DMS已被用于为波音公司进行大规模的基于C++的任务航空电子系统软件的自动化重组。我不相信有任何其他工具可以做到这一点。(Clang看起来是在尝试,但只针对C++。YMMV)。不幸的是,没有ASC的纯C访问(并且没有实现一个计划)。我认为应该可以通过LILCLAN走过AST。谢谢你的回答,我现在要测试一下叮当声。看起来,这可能是解决方案……警告:仔细看看C++0x支持,有很多情况还没有解决(尽管如果您只需要AST,情况看起来很好)。当然,C++社区是一个很好的实体,LIbCLANG是C++ API;普通C包装器还很初级。CLang做了很多工作。遗漏的细节是否被认为是可以接受的,留给读者的是一个练习:“解析提升”是我个人的准则。我知道Clang还不存在。@MSalters,Clang项目声称现在可以编译Boost,但只能部分编译Qt,所以他们正在实现,但我不想尝试用它编译生产代码@MSalters:能够生成AST和能够编译AST之间有很大的区别。据我所知,Clang解析Boost很好。@mAlters,Clang不仅能够解析Boost,甚至还通过了大部分测试:“感觉勇敢”将是一个错误的术语。你必须感觉到奥林匹亚接受一个完全C++分析器的任务。真正的问题是“你的目的是什么?”对于非常简单的任务,cint可能会有所帮助。对于任何复杂的分析,你需要相当于一个完全C++编译器前端(C++的名字解析是一个婊子)。对于任何转换代码的尝试,您都需要能够往返于源代码的工具,这些工具很少@