Question

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?

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top