Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要C++;分析器 我需要一个好的、稳定的、可能的、易于使用的C/C++接口的C++解析器库(C是首选)。 我听说CICT是优秀的C++解释器。我可以为此使用它(或它的一部分)吗? 有什么建议吗?_C++_Parsing_Free - Fatal编程技术网

需要C++;分析器 我需要一个好的、稳定的、可能的、易于使用的C/C++接口的C++解析器库(C是首选)。 我听说CICT是优秀的C++解释器。我可以为此使用它(或它的一部分)吗? 有什么建议吗?

需要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

我不知道cint,但我听说人们用它

我也一直在寻找一个好的独立库,但没有找到。

请参阅:
它既有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++;C、C、java、COBOL和各种其他语言也有FRON结束)。DMS提供了通用解析、符号表构建、流分析机制、树导航/检查/修改的程序API、源到源转换以及AST到源文本再生,包括原始注释、数字根目录等。所有这些功能都可供C++前端使用。 DMS还设计用于处理严重任务所需的规模。通常,您不仅需要一个编译单元(GCC最多只能提供一个编译单元),还需要访问整个编译单元集。DMS已经被用来分析/变换成千上万的C++编译单元,以及字面上成千上万的C编译单元(在2500万行应用程序)。 当涉及到程序操作工具时,“易于使用的库”是一个矛盾修饰法。语言本身是复杂的(C++是最难的语言之一,C++0X的情况越来越糟),这导致了问题性质的复杂性以及答案的复杂性(例如,“是否有任何模板实例可以修改任何命名空间N中类C中方法Y中的局部变量X?”)。这些问题本身很难回答

您想要的是一个具有必要复杂性的库,以便您完成任务。DMS在过去15年中一直处于不断发展之中,以提供必要的复杂性。如果你想做严肃的程序处理,我声称你需要这些信息


作为证明,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++的名字解析是一个婊子)。对于任何转换代码的尝试,您都需要能够往返于源代码的工具,这些工具很少@