我正在尝试使用 antlr4
构建 MT940 解析器。语法很简单,但在大多数情况下都有效。
现在我想返回我自己的类。这有效:
file returns [String myString]
:
Header940? record+ EOF
;
我认为这是因为字符串在默认的 java 包中。
我想要这个:
file returns [List<MT940Record> records]
:
Header940? record+ EOF
;
TestRig抱怨(逻辑上):
/tmp/TestRigTask-1392235543340/MT940_5aParser.java:50: error: cannot find symbol
public List<MT940Record> records;
^
symbol: class MT940Record
location: class FileContext
如何在 ANLTRWorks 的 TestRig 中设置 CLASSPATH/lib 目录?
在ANTLRWorks中,你不能。您可以在问题跟踪器上为此添加问题:https://github.com/sharwell/antlrworks2/issues
请注意,ANTLR 4 的设计使您不再需要在语法中使用用户定义的参数和/或返回值。不要像上面描述的那样返回List<MT940Record>
,而应该在解析完成后使用侦听器或访问者来计算必要的结果。