java - 解析java源文件,然后使用ANTLR4修改原始源

标签 java antlr antlr4

我是 ANTLR 的新手。 我的目标是将我们的代码库升级到 Hibernate 4,新版本已经弃用了类“HibernateCallback”。 我们有一个庞大的代码库,其中包含数千个已弃用类的引用。 这就是我的想法: 1. 读取 Java 源文件 2.每当我们遇到如下代码:

getDao().execute(new HibernateCallback() {
                        public Object doInHibernate(Session session)
                                        throws HibernateException {
                                //Some code;
                        }
                });

3.在此代码之前,我想插入另一行,如下所示:

session.doWork(new Work(){
        @Override
        public void execute(Connection conx) throws SQLException {
         //Some code from the previous pattern
        }
});

我有一个工作示例 - 但它打印到标准输出,我实际上想修改 antlr 解析器正在读取的 java 文件。

我在“ExtractInterfaceTool”一书中遵循的示例 - 用于从 java 类中提取 java 接口(interface)。

如果这个问题得到了回答,那么请接受我的道歉 - 请为我指明正确的方向。

最佳答案

ANTLR 4 当前没有任何自动源代码转换 功能,至少在核心运行时中没有。当我为 ANTLRWorks 2(它使用 ANTLR 在源文件被编辑时解析它们)实现一个小的重构操作时,我使用解析树中的信息来识别在哪里插入额外的代码,但是实际的插入过程是我必须自己编写的。

关于java - 解析java源文件,然后使用ANTLR4修改原始源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16688722/

相关文章:

java - 同步缓存矩阵

parsing - 词法分析器与解析器

antlr - ANTLR 词法分析器规则中的句法谓词

java - ANTLR4:消耗所有剩余输入直到 EOF

java - JSTL 有哪些替代方案?

java - 迁移 Java 类以使用泛型

java - 在 Swing 中加载多个文件

javascript - 为什么 antlr4 在 LT 上会卡住!*

antlr - 编写 ANTLR 目标

java - antlr4 在多核 CPU 上的性能