1 package it.unical.mat.parsers.pddl;
3 import it.unical.mat.parsers.pddl.pddl_parser_base.PDDLGrammarBaseVisitor;
4 import it.unical.mat.parsers.pddl.pddl_parser_base.PDDLGrammarLexer;
5 import it.unical.mat.parsers.pddl.pddl_parser_base.PDDLGrammarParser;
6 import java.util.ArrayList;
7 import org.antlr.v4.runtime.BailErrorStrategy;
8 import org.antlr.v4.runtime.CharStreams;
9 import org.antlr.v4.runtime.CommonTokenStream;
10 import org.antlr.v4.runtime.ConsoleErrorListener;
11 import org.antlr.v4.runtime.DefaultErrorStrategy;
12 import org.antlr.v4.runtime.RecognitionException;
13 import org.antlr.v4.runtime.atn.PredictionMode;
16 private ArrayList <String> parameters =
new ArrayList <> ();
22 public static final PDDLParser parse(
final String action) {
23 final CommonTokenStream tokens =
new CommonTokenStream(
new PDDLGrammarLexer(CharStreams.fromString(action)));
27 parser.getInterpreter().setPredictionMode(PredictionMode.SLL);
28 parser.removeErrorListeners();
29 parser.setErrorHandler(
new BailErrorStrategy());
32 visitor.visit(parser.output());
33 }
catch (
final RuntimeException exception) {
34 if(exception.getClass() == RuntimeException.class && exception.getCause() instanceof RecognitionException) {
36 parser.addErrorListener(ConsoleErrorListener.INSTANCE);
37 parser.setErrorHandler(
new DefaultErrorStrategy());
38 parser.getInterpreter().setPredictionMode(PredictionMode.LL);
39 visitor.visit(parser.output());
46 public String [] getParameters() {
47 return parameters.toArray(
new String [0]);
52 for(
int index = 1; index < ctx.IDENTIFIER().size(); index++)
53 parameters.add(ctx.IDENTIFIER(index).getText());