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