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

有帮助吗?

解决方案

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

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

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

其他提示

标签, , 也许?

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

你打开了一大堆蠕虫,这并不能有效地利用你的时间,等等等等。

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

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

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

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

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

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

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

Lex/yacc 适合构建解析器。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top