質問

I'm trying to build a MT940 parser using antlr4. The grammar is simple but works for most cases.

Now I want to return my own classes. This works:

file returns [String myString]
    :
    Header940?  record+ EOF
  ;

I think this is becasue String is in the default java packages.

I want this:

file returns [List<MT940Record> records]
    :
    Header940?  record+ EOF
  ;

The TestRig complains (logically):

/tmp/TestRigTask-1392235543340/MT940_5aParser.java:50: error: cannot find symbol
        public List<MT940Record> records;
                    ^
  symbol:   class MT940Record
  location: class FileContext

How can I set the CLASSPATH / lib directory in the TestRig in ANLTRWorks?

役に立ちましたか?

解決

In ANTLRWorks, you can't. You can add an issue for this on the issue tracker: https://github.com/sharwell/antlrworks2/issues

Note that ANTLR 4 was designed so you no longer need to use user-defined arguments and/or return values in your grammar. Instead of returning a List<MT940Record> like you described above, you should use a listener or visitor after the parse is complete to compute the necessary result.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top