【问题标题】:Parsing Java source code with C++用 C++ 解析 Java 源代码
【发布时间】:2011-12-12 12:44:00
【问题描述】:

我想在 C++ 中创建一个 Java 源代码 parsing 功能。这个应用程序的目的是在内部数据结构中生成一个syntax tree,以便我能够自行遍历数据树结构并对其进行分析。

哪些工具可以帮助我实现目标?

【问题讨论】:

  • 有很多工具可以做到这一点。谷歌解析器生成器。
  • 显而易见的问题是您为什么要这样做?您可能会发现运行 javac 并解析生成的字节码会更简单、更容易。
  • 做这样的事情有助于理解你正在处理的材料的基本原理。例如。我曾经写过一个完整的 SGML 解析器,它帮助我回答了很多我什至不知道自己有的问题。
  • @MarceloCantos 那么,首先我需要一个解析器生成器吗?好的。我找到了 Bison 和 YACC 软件。其中之一怎么样?
  • @PeterLawrey:目前我正在做一些关于如何打破语言结构的初步研究。通过这种方式,我能够更好地理解 Java 语言 - 我认为 :-)。

标签: java c++ parsing abstract-syntax-tree semantic-analysis


【解决方案1】:

也许ANTLR 可以帮助您,但了解Java 程序需要加载该程序中引用的相关类。

【讨论】:

  • 此外,它们可能是 C++ 的现有语法。
  • @Agemen:我发现 ANTLR 能够生成 C++ 源代码,但我已经确定我不会使用任何使用虚拟机的语言。 :-)
【解决方案2】:

您可以将yaccthis grammar 一起使用。

【讨论】:

  • 谢谢!我会检查一下。 :-)
【解决方案3】:

你也可以试试;

http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/

它有不同的端口,如 C#、Java、C++、F#、VB.Net、Oberon 等,它有一个很好的语言扫描器和解析器,适用于不同的语言。因此,您可以使用它从 c++ 中解析 java。

【讨论】:

  • 谢谢!我会检查一下。 :-)