使用ANTLR对C++代码进行语法分析并生成抽象语法树

本人正在用java写一个代码相似度匹配检测,需要使用ANTLR对传入的C++代码进行语法分析并生成抽象语法树,搜了一下基本没看懂教程。 现在提问如下:
1.ANTLR的jar包中是否已经包含了C++的文法,可以直接对C++代码进行语法分析?
2.如何对C++代码进行语法分析并生成抽象语法树?
3.如何遍历这颗树?
4.是否有关于这方面的论文可以参考下?

阅读 15.1k
2 个回答
  1. 没有c++文法,无法直接对c++文法进行分析。不过github上有一个包含大部分语言(也包括c++) antlr格式的语法文件集合。cpp14的语法文件在这里

  2. 你可以用从语法文件生成parser,然后用parser扫描c++代码,看官方教程Parser and lexer interpreters

  3. 扫描代码后你会得到一个ParseTree 这个对象提供遍历的方法

  4. 我推荐官方文档以及我的博文antlr4+maven+计算器例子

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题