我们正在处理一些相当大的 java 文件。嵌入在 java 中的是各种非 java 语句/文件(SQL 是最普遍的)。我可以扩展语法,但出于我们的目的,在另一个 channel 上发送错误语句、收集这些语句并进行解析会更有效率。或者找到一些方法来隔离它们。我们目前对评论执行此操作,因为评论包含必要的附加信息。
关于如何优雅地处理嵌入式岛语法的任何建议?
这是一个我们需要解析数据库调用以及语言的示例
public static void viewTable(Connection con) throws SQLException {
String query = "select COF_NAME, SUP_ID, PRICE, " +
"SALES, TOTAL " +
"from COFFEES";
try (Statement stmt = con.createStatement()) {
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String coffeeName = rs.getString("COF_NAME");
int supplierID = rs.getInt("SUP_ID");
float price = rs.getFloat("PRICE");
int sales = rs.getInt("SALES");
int total = rs.getInt("TOTAL");
System.out.println(coffeeName + ", " + supplierID +
", " + price + ", " + sales +
", " + total);
}
} catch (SQLException e) {
JDBCTutorialUtilities.printSQLException(e);
}
}
代码处理正确(它是有效的 Java),但我们需要提取 SQL 语句并通过后期处理运行它们。
最佳答案
有一种方法可以做到这一点,只是不是我想要的方式。 Kaby76 很到位,我们最终解析字符串以查找我们已经实现的某些动词,将后处理字符串加载到文件中,然后针对这些文件运行 antlr。它不是“优雅的”,但它确实有效(这是我所能要求的)
关于java - Antlr 可以将嵌入式语法路由到单独的文件进行处理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62535463/