Shell扫描“中的变量”;";源程序

Shell扫描“中的变量”;";源程序,shell,powershell,Shell,Powershell,有人能帮我解决以下问题吗 这个问题的思想是扫描Foo.c文件以查找所有变量、它们出现的次数以及它们出现的行 实现可以至少采用以下方法之一: 构建一个bat脚本和最终的附加C程序 解决这个问题。在cmd窗口中运行实现 构建ps1脚本并最终生成其他C程序 解决这个问题。在PowerShell窗口中运行实现 我认为,为了获得所有变量声明和使用,并且只获得变量声明和使用,您至少需要部分解析源文件并分析生成的抽象语法树 那么,您的第一步就是编写一个解析器或找出如何利用现有的解析器。如果您正在编写C#您可以

有人能帮我解决以下问题吗

这个问题的思想是扫描
Foo.c
文件以查找所有变量、它们出现的次数以及它们出现的行

实现可以至少采用以下方法之一:

  • 构建一个bat脚本和最终的附加C程序 解决这个问题。在cmd窗口中运行实现

  • 构建ps1脚本并最终生成其他C程序 解决这个问题。在PowerShell窗口中运行实现


  • 我认为,为了获得所有变量声明和使用,并且只获得变量声明和使用,您至少需要部分解析源文件并分析生成的抽象语法树


    那么,您的第一步就是编写一个解析器或找出如何利用现有的解析器。

    如果您正在编写C#您可以使用“C”语法来解析您的源代码。

    您当然可以尝试将其作为一个bat脚本来编写,但相信我,我已经编写了近200个bat脚本,这太可怕了。cmd.exe的findstr会是你的朋友,但在bat和regex之间,你会发疯的。Powershell肯定会更好,但是最好使用真正的脚本语言,如perl、ruby或python


    幸运的是,在您的例子中,C中的所有var都是显式声明的,因此您可以扫描一次所有var声明,并创建一个数组。然后,再次扫描以查找这些变量名的实例。实例总数为Total_times_seen-1,因为第一个实例是var声明。这当然假设它们只声明一次…

    ,这可能很有趣。您必须区分类型名和变量名吗?来自变量的宏?如果走到极端,评论剥离本身就是一种娱乐。而且你也不想从弦里面拾取材料。只有一堆问题要考虑。如果这是家庭作业,他们不可能期望他解析C,除非它是一个顶点项目或别的什么。最有可能的是,真正的目标是将行拆分为字,排序和计数,然后消除保留字。