我将 C++ 方法的主体作为字符串,并希望获取此代码中使用的所有方法的列表。什么工具最适合进行这种解析?
它必须支持所有情况:
opSomeMethod();
someObject.someMethod();
someObject->someMethod();
最好是使用 Java,但它可能是可以从控制台运行的小型 c++ 程序。
您可以使用 LEX 和 YACC 工具来定义语法和解析字符串。Lex 和 Yacc 可以读取源程序并发现其结构。
再次发现源结构的任务被分解为子任务:
Lex 帮助编写控制流由输入流中的正则表达式实例引导的程序。它非常适合编辑器脚本类型转换和分段输入以准备解析例程。Lex 源是正则表达式和相应程序片段的表。该表被转换为一个程序,该程序读取输入流,将其复制到输出流并将输入划分为与给定表达式匹配的字符串。当每个这样的字符串被识别时,相应的程序片段就会被执行。表达式的识别由 Lex 生成的确定性有限自动机执行。用户编写的程序片段按照相应的正则表达式在输入流中出现的顺序执行。
Yacc 提供了一个通用工具来描述计算机程序的输入。Yacc 用户指定其输入的结构,以及在识别每个此类结构时要调用的代码。Yacc 将这样的规范转化为处理输入过程的子程序;通常,让这个子程序处理用户应用程序中的大部分控制流是方便和适当的。