2

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

4

8 回答 8

4

ctags,也许?

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

于 2008-09-17T16:52:42.887 回答
3

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

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

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

于 2008-09-17T16:57:59.863 回答
2

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

继续回答,如果您谈论的内容超出了琐碎的分析并且需要准确性,则需要解析 C 源代码。你可以用任何语言做到这一点,但你几乎肯定会想要从高级语法生成你的解析器。有很多工具可以做到这一点。一个现代且特别强大的解析器生成器是ANTLR;C 有许多 ANTLR 语法,包括更易于使用的子集。

于 2008-09-17T16:55:56.170 回答
1

研究脚本语言。我会推荐 Python 或 Perl。

于 2008-09-17T16:52:41.810 回答
1

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

如果您熟悉 Haskell,那么它可能值得一看。即使您不是,尝试一下也可能很有趣。

于 2008-09-17T16:55:21.727 回答
0

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

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

也许最好的起点是看一下 doxygen 并尝试尽可能多地重用那里完成的工作

于 2008-09-17T16:54:58.933 回答
0

Lex/yacc 适用于构建解析器。

于 2008-09-17T16:56:35.403 回答
0

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

于 2009-12-11T07:36:37.607 回答