哪种语言对于为有效的C程序创建报告很有用

时间:2008-09-17 16:48:59

标签: c report parsing

任何人都可以向我推荐一种有用的编程语言,可以用来创建一个工具来分析给定的C程序并生成包含给定程序信息的txt报告或html报告(函数列表,变量列表等)。 我打算建立的程序类似于doxygen,但我想将它用于个人用途。

8 个答案:

答案 0 :(得分:4)

ctags,也许?

  

Ctags生成源文件中的语言对象的索引(或标记)文件,允许文本编辑器或其他实用程序快速轻松地找到这些项目。标记表示索引条目可用的语言对象(或者,也就是为该对象创建的索引条目)。

答案 1 :(得分:3)

Python和Perl都具有出色的字符串处理能力。

我建议使用类似ctags的东西来解析程序,然后创建一个脚本来读取ctags文件并输出txt / html。

ctags使用的文件格式是明确定义的,以便其他程序可以读取它。有关ctags本身及其使用的文件的详细信息,请参阅http://ctags.sourceforge.net

答案 2 :(得分:2)

你正在打开一大堆蠕虫,这不是对你的时间的有效利用,等等等等等。

接下来回答一个问题,如果你正在讨论除了微不足道的分析之外的任何事情,并且你需要准确性,你将需要解析C源代码。您可以使用任何语言执行此操作,但您几乎肯定希望从高级语法生成解析器。有很多工具可供选择。一个现代且特别强大的解析器生成器是ANTLR; C语言有许多ANTLR语法,包括更容易使用的子集。

答案 3 :(得分:1)

查看脚本语言。我推荐Python或Perl。

答案 4 :(得分:1)

Haskell有一个相对较新的language-c项目http://www.sivity.net/projects/language.c,允许分析C代码。

如果您熟悉Haskell,那么可能值得一看。即使你不是,也可以去参加。

答案 5 :(得分:0)

如果它是您想要的编程语言,那么我会说一些以字符串处理能力而闻名的东西,这意味着perl。

然而,您需要的任务可能相当复杂,因为您需要“了解”语言,因此您需要遵循编译器执行的相同步骤,对语言进行词汇和语法分析(想想flex,想想yacc)为了真正“知道”这些字符串的含义。

也许最好的出发点是看看doxygen,尽量重用尽可能多的工作

答案 6 :(得分:0)

Lex / yacc适合构建解析器。

答案 7 :(得分:0)

pycparser是用纯Python编写的ANSI C89 / C90的完整解析器。它被广泛用于分析C源代码以满足各种需求。它附带了一些示例代码,例如列出文件中的所有函数定义等。