如何使用 ANTLR4 导入其他 java 库?

how can I import other java lib with ANTLR4?

我正在寻找一种方法来添加其他库,我需要用我在 ANTLR4 中使用的代码达到最终结果,但我没有找到正确的方法。

例如(简单的例子):

解析单词 "today" 并打印出日期 "Date: month day year" 的代码,例如今天(日期:2017 年 7 月 17 日),为此我必须导入 import java.util.*; .

grammar Exp; the_day: 'today'; WS : (' ' | '\t' | '\n' | '\r') -> skip;

有没有办法直接从文件 .g4 中做到这一点?或者我必须用另一种方式做到这一点? 谢谢

您可以通过将一些代码片段注入词法分析器或解析器来做到这一点 header(取决于您需要 import 语句的位置)。

这是通过语法开头的 @lexer::header{...}@parser::header{...} 代码块完成的。
因此,如果您想将您的库导入解析器 class,您只需在语法顶部添加以下代码片段:

@parser::header {
    import java.util.*;
}