谁能帮助我就如何解决以下问题提供一些建议?
问题的想法是扫描Foo.c
文件以查找所有变量、它们出现的次数以及它们确实出现的行。
该实现可以是至少一种方法:
构建一个 bat 脚本并最终构建额外的 C 程序来解决问题。在 cmd 窗口中运行实现。
构建一个 ps1 脚本并最终构建额外的 C 程序来解决问题。在 PowerShell 窗口中运行实现。
谁能帮助我就如何解决以下问题提供一些建议?
问题的想法是扫描Foo.c
文件以查找所有变量、它们出现的次数以及它们确实出现的行。
该实现可以是至少一种方法:
构建一个 bat 脚本并最终构建额外的 C 程序来解决问题。在 cmd 窗口中运行实现。
构建一个 ps1 脚本并最终构建额外的 C 程序来解决问题。在 PowerShell 窗口中运行实现。
我认为,为了获得所有变量声明和使用,并且只有变量声明和使用,您将需要至少部分解析源文件并分析生成的抽象语法树。
那么,您的第一步是编写一个解析器或弄清楚如何利用现有的解析器。
如果您正在编写 C#,您可以使用ANTLR V3来解析您的源代码,因为存在“C”语法。
您当然可以尝试将其编写为 bat 脚本,但请相信我,我已经编写了近 200 个 bat 脚本,这太可怕了。cmd.exe 的 findstr 会是你的朋友,但在 bat 和 regex 之间,你会发疯的。Powershell 肯定会更好,但是最好的选择是真正的脚本语言,例如 perl、ruby 或 python。
幸运的是,无论如何,在您的情况下,C 中的所有 var 都是显式声明的,因此您可以扫描一次以查找所有 var 声明并创建它们的数组。然后,再次扫描以查找这些变量名称的实例。实例总数将为 total_times_seen -1,因为第一个是 var 声明。这当然假设它们只被声明一次......