有没有可以解析C语法的库?C语法分析器
例如,我想写我自己的代码/脚本,将分析c语法的c文件。每个函数/文件的“if”语句的数量,函数中每行代码的注释行数等.....
我没有问题写所有这些自定义代码只是为了使工作更容易已经有一些库可以用来跳过开始,而不是从解析器开始。
谢谢!
有没有可以解析C语法的库?C语法分析器
例如,我想写我自己的代码/脚本,将分析c语法的c文件。每个函数/文件的“if”语句的数量,函数中每行代码的注释行数等.....
我没有问题写所有这些自定义代码只是为了使工作更容易已经有一些库可以用来跳过开始,而不是从解析器开始。
谢谢!
除了clang
已经提出的建议,请考虑pycparser和Boost.Wave。
布赖恩,pycparser正是我所追求的。非常简单和容易。有没有简单的c/C++的东西?如果没有,我会用Python来破解一些东西。 – jox
您可能会发现,针对C++的“黑客攻击”非常困难且容易出错。 –
就个人而言,我会首先寻找一个现有的工具来做你想做的事。这听起来像是一项非常多的工作,代码指标中有很多很好的免费工具(你看过SourceForge?)。
如果你坚持你的项目走在前面,你可能会为谷歌莱克斯/ Yacc语法为C.
不过,我从莱克斯/ Yacc的几年前切换到Antlr。我特别喜欢它允许你的方式visually step through your parsing。
一个很棒的工具,并且免费。有一个complete grammar for C也可用,所以你可以修改,以满足您的需求。
希望这会有所帮助。好运
尽管它们更多地针对语义分析而不是语法分析,但您可能对CIL和Frama-C感兴趣,它基于它(均在OCaml中)。另一个感兴趣的工具(OCaml和Python绑定)是Coccinelle。
你也可以考虑尝试一个代码覆盖工具。尽管代码覆盖率旨在向您显示多少百分比的源代码被执行,但其中一些还显示了在执行代码覆盖时遇到了多少条件语句或循环。根据我的经验,我可以分享的一个例子是windriver工作台代码覆盖工具
我认为使用'clang'作为库可能工作。 –
嗯,我不知道如何用叮当做到这一点。例如,计算函数中“if”语句的数量。 – jox
@jox,铿锵可以肯定你在找什么。毕竟它确实包含完整的C语言分析器。 –