本人正在用java写一个代码相似度匹配检测,需要使用ANTLR对传入的C++代码进行语法分析并生成抽象语法树,搜了一下基本没看懂教程。 现在提问如下:
1.ANTLR的jar包中是否已经包含了C++的文法,可以直接对C++代码进行语法分析?
2.如何对C++代码进行语法分析并生成抽象语法树?
3.如何遍历这颗树?
4.是否有关于这方面的论文可以参考下?
本人正在用java写一个代码相似度匹配检测,需要使用ANTLR对传入的C++代码进行语法分析并生成抽象语法树,搜了一下基本没看懂教程。 现在提问如下:
1.ANTLR的jar包中是否已经包含了C++的文法,可以直接对C++代码进行语法分析?
2.如何对C++代码进行语法分析并生成抽象语法树?
3.如何遍历这颗树?
4.是否有关于这方面的论文可以参考下?
1、语法、文法 可以在 http://www.antlr3.org/grammar/list.html 找找啊 肯定找到的 生成AST就可以进行分析了。
2.尼玛 看 Document去
3.我操 for 啊
4.Google a
4 回答1.2k 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
2 回答715 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.7k 阅读
没有c++文法,无法直接对c++文法进行分析。不过github上有一个包含大部分语言(也包括c++) antlr格式的语法文件集合。cpp14的语法文件在这里
你可以用从语法文件生成parser,然后用parser扫描c++代码,看官方教程Parser and lexer interpreters
扫描代码后你会得到一个ParseTree 这个对象提供遍历的方法
我推荐官方文档以及我的博文antlr4+maven+计算器例子