假设有一个扩展的C++框架。这个框架有多个模块。我需要开发一个工具,可以扫描框架中的所有 .cpp,.h,*.hpp文件,隔离与一个可执行文件相关的文件,然后从这些文件中删除编译指定可执行文件不需要的所有源代码。
**例如,**该框架具有查询关系数据库、文档数据库、键值存储、面向列的数据库和图数据库的模块。
我只想隔离那些与关系数据库相关的文件,然后我想删除关系数据库中不使用的所有代码。
假设框架有一个文件format_string.hpp.
这个文件包含73个函数,可以用各种方式格式化字符串。然而,关系数据库相关的模块只使用了该文件中的15个函数。所以,我想从该文件中删除其余的58个函数。
**注意:**我经常需要学习C++源代码,并将其翻译/转换为其他编程语言。这个工具将帮助我理解算法。
删除/清除不是永久性的。它只是为了学习的目的。这是关于减少进一步手动检查的源代码量。
问题:
我已经使用C#实现了文件隔离部分。
但是,我不知道如何实现第二部分。
我需要使用正则表达式吗?或者我需要一个词法分析器和一个解析器吗?
1条答案
按热度按时间mrphzbgm1#
这在C#中使用反射是可能的,但是对于C++来说,你基本上需要为此编写一个编译器。如果编译器在启用优化的情况下使用,它会为你做这件事,并去除不用的代码,但是这是编译的最后一步(或者更确切地说,链接)。通过纯文本分析来做到这一点几乎是不可能的,因为有太多的方式可以引用代码,即使没有字面上提到它(例如宏或虚拟函数)。