使用 javax.lang.model 或 ANTLR JavaParser 获取 Java 源代码信息的示例/教程

2024-01-02

我想为简单的 Java 逻辑创建一个自动的类似流程图的可视化,为此我需要解析 Java 源代码,我有 2 个候选者,ANTLR http://www.antlr.org/ and javax.lang.model http://download.oracle.com/javase/6/docs/api/index.html?javax/lang/model/util/package-summary.htmlJava 6 的版本。两者都不容易。

我还没有找到一个与我想要实现的目标相距甚远的工作示例。

我想找到简单的变量声明、赋值和流程(if、for、switch、布尔条件等)

是否有一个简单的示例或教程? 我发现很少有 ANTLR 示例(没有一个是在没有大量“作业”的情况下开箱即用的),并且绝对没有针对 javax.lang.model 的示例


您想自己生成解析器有什么特殊原因吗? IMO,让现有的解析器为您创建一个 AST 会更容易,您“简单地”遍历它以收集有关源文件的数据。使用您最喜欢的搜索引擎和关键字“get ast java source”将导致许多相关的点击。

乍一看,这些看起来都是合适的候选人:

  • Eclipse JDT API http://www.ibm.com/developerworks/opensource/library/os-ast/
  • java解析器 http://code.google.com/p/javaparser/

当然你可以使用ANTLR,有很多ANTLR语法 http://www.antlr.org/grammar/list对于 Java 可用,但有is选择此工具(或其他一些解析器生成器)时的学习曲线相当不错。如果您选择 ANTLR,我非常乐意回答有关它的任何问题。

祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 javax.lang.model 或 ANTLR JavaParser 获取 Java 源代码信息的示例/教程 的相关文章

随机推荐

  • Doctrine2:使用参考表中的额外列处理多对多的最佳方法

    我想知道在 Doctrine2 中处理多对多关系的最好 最干净和最简单的方法是什么 假设我们有一张像这样的专辑木偶大师由金属乐队 http www last fm music Metallica Master of Puppets有几首曲目
  • @staticmethod 可以继承吗?

    这个问题正好说明了这一点 我有一个抽象类 它在辅助函数中调用静态方法 并且我希望子类简单地定义静态方法并使用它运行 也许我可以使用类似于 getattr 的东西 我应该使用 classmethod 来代替吗 像这样的事情 class A o
  • 如何停止/重新启动 docker 容器而不丢失更改?

    我执行了以下操作 但丢失了 Docker 容器中所有更改的数据 docker build t
  • 正则表达式中 /gi 的含义是什么? [复制]

    这个问题在这里已经有答案了 我在 JavaScript 代码中看到这样一行 var regex w s gi 这个东西的意思是什么 gi在正则表达式中 其他部分我可以理解 因为它接受一组单词和空格 但不接受 gi g modifier gl
  • 在 IList 上调用 .Last() 是否会迭代整个列表? [复制]

    这个问题在这里已经有答案了 是否 Last 扩展方法考虑它是否被调用IList 我只是想知道这些之间是否存在显着的性能差异 IList
  • 如何为以编程方式创建的谷歌表单/工作表编写绑定脚本

    我有一个谷歌表单 可以以编程方式为活动创建注册表单 带有关联的电子表格 这些表单将收集电子邮件 我想向使用这些以编程方式创建的表单的注册者发送一封通知电子邮件 而无需手动进入这些表单 电子表格中的每一个来插入实现该目的的脚本 换句话说 有没
  • 从事务中返回项目的持续时间,多对多,SQL

    希望我能在这方面得到一些帮助 情况 有两个进站和一个出站 物品被扫描进出 我需要知道某件物品在车站中存放了多长时间 让我们将 入站 视为传入日期扫描和传出日期扫描之间的时间 Problem 一个项目可以 意外地 被多次扫描到任一站 为此 我
  • 使用 LINQ 处理大型 SQL 查询

    我试图通过实体数据模型从包含大约 2000 万个条目的 MS SQL 数据库中的表中获取每条记录 我最初的想法是分块检索数据 如下所示 public IEnumerable
  • 在 AVPlayerLayer 和 AVPlayerViewController 中同步视频

    我正在与AVPlayer使用 a 显示正在播放的视频URL在里面 它有两个部分 1 首先 我嵌入了AVPlayer到视图的子层使用AVPlayerLayer i e var player AVPlayer func configure le
  • Spring分布式事务涉及RMI调用可能吗?

    背景 我有 Spring 客户端应用程序 它使用 RMI 向两台服务器提供服务 在客户端中 我将一个实体保存到数据库 简单 并使用该实体的详细信息对两个服务器进行 rmi 调用 我在服务器上使用 Spring 3 0 2 客户端是一个简单的
  • 绑定后滚动到长列表选择器中的特定项目

    我正在使用 Longlistselector 来绑定聊天消息 绑定后我需要显示最后一条消息 但默认情况下它会出现在顶部消息中 我尝试滚动到最后一项 ScrollTo lastmessage 但它不起作用 任何人都可以提供解决方案 其他人通过
  • domReady 与 Ready - 迁移到 Polymer 1.0

    在Polymer0 5中 我有以下代码 模板 div class scroll div class content div div
  • Oracle中如何获取主键列?

    我需要获取主键列的名称 在输入中 我只有表名 SELECT cols table name cols column name cols position cons status cons owner FROM all constraints
  • 如何在 python 中输出 utf-8 字符串列表?

    嗯 字符编码和解码有时让我很沮丧 所以我们知道u u4f60 u597d is the utf 8的编码你好 gt gt gt print hellolist u u4f60 u597d gt gt gt print hellolist 0
  • 宏运行时错误“9”:下标超出范围

    我在网上找到了一个用密码保护工作表的宏 它工作正常 但是当我保存文件时 我收到消息 运行时错误 9 订阅超出范围 我以前从未编程或使用过 Visual Basic 需要一些帮助 谢谢 宏是 Private Sub Workbook Befo
  • 使用 SqlDataReader 获取二进制数据

    我有一个名为 Blob Id int Data Image 的表 我需要使用 SqlDataReader 来获取该图像数据 请注意 我不想将 Response Binarywrite 数据发送到浏览器 我只需要该二进制数据作为 byte 即
  • 图表宽度问题

    我正在开发一个项目 该项目的设计与fiddle http jsfiddle net uBUv9 1 左侧的侧边导航带有切换选项 图表位于右侧 发生的事情是图表响应能力非常棒 并且当我调整窗口大小时它是完美的 但在我的项目中 我有一个切换按钮
  • 通过 USB 安装应用程序:设备暂时受到限制

    当我打开通过 USB 安装在开发者模式下 它会弹出 toast 消息说该设备暂时受到限制 然后关闭设置 有什么解决办法吗 我搜遍了诸如关闭MIUI优化之类的办法还是不行 我无法通过Android Studio以这种方式调试我的应用程序 通过
  • 在 Android 中更改 Flutter 的表情符号字体

    Android 有可怕的表情符号 我可以在 Android 版 Flutter 中使用 Apple 的表情符号字体 就像 Telegram 和 WhatsApp 过去使用的那样 吗 编辑 我的第一个猜测是添加字体 但由于我不想更改所有其他字
  • 使用 javax.lang.model 或 ANTLR JavaParser 获取 Java 源代码信息的示例/教程

    我想为简单的 Java 逻辑创建一个自动的类似流程图的可视化 为此我需要解析 Java 源代码 我有 2 个候选者 ANTLR http www antlr org and javax lang model http download or