我是 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/