我需要解析SWIG使用的.i文件中的函数头,其中包含函数头旁边的各种垃圾。 (最终输出将是功能声明列表)
对我来说最好的选择是使用GNU工具链(GCC,Binutils等)这样做,但我可能会错过一个简单的方法来使用SWIG。如果我请告诉我!
谢谢:]
编辑:我也不知道如何使用GCC工具链,如果你有一个想法它会很棒。
答案 0 :(得分:2)
答案 1 :(得分:1)
我们的DMS Software Reengineering Toolkit提供通用程序解析,分析和转换功能。它有各种语言的前端,包括C ++。
它已被用于分析和转换非常复杂的C ++程序及其头文件。
在“解析函数头”之后,您不清楚将要执行的操作;通常人们想要提取一些信息或制作另一件神器。 DMS及其C ++前端可以进行解析;您可以配置DMS来执行自定义操作。
实际上,这通常不是下午的练习; DMS是一个复杂的野兽,因为它必须处理复杂的野兽,如C ++。而且我希望你能为任何可以处理C ++的工具面对同样的复杂性。 GCC工具链可以清楚地处理C ++,所以你可以用它来做(在相同的复杂程度)但GCC被设计成一个编译器,恕我直言你会发现它是一个让它做什么你想要。
您的“输出函数声明”目标尚不清楚。你只想要功能名称?你想要一个功能签名?您想要函数所依赖的所有类型声明吗?您想要函数所依赖的所有类型声明,如果它们尚未存在于您打算使用的现有包含文件中?
答案 2 :(得分:0)
从C头文件的垃圾中提取函数的最佳方法是替换出构成最臭的垃圾:宏。你可以用:
来做到这一点 cpp - The C Preprocessor