EmbASP-Java
PDDLParser.java
1 package it.unical.mat.parsers.pddl;
2 
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;
14 
15 public class PDDLParser extends PDDLGrammarBaseVisitor <Void> {
16  private ArrayList <String> parameters = new ArrayList <> ();
17 
18  private PDDLParser() {
19 
20  }
21 
22  public static final PDDLParser parse(final String action) {
23  final CommonTokenStream tokens = new CommonTokenStream(new PDDLGrammarLexer(CharStreams.fromString(action)));
24  final PDDLGrammarParser parser = new PDDLGrammarParser(tokens);
25  final PDDLParser visitor = new PDDLParser();
26 
27  parser.getInterpreter().setPredictionMode(PredictionMode.SLL);
28  parser.removeErrorListeners();
29  parser.setErrorHandler(new BailErrorStrategy());
30 
31  try {
32  visitor.visit(parser.output());
33  } catch (final RuntimeException exception) {
34  if(exception.getClass() == RuntimeException.class && exception.getCause() instanceof RecognitionException) {
35  tokens.seek(0);
36  parser.addErrorListener(ConsoleErrorListener.INSTANCE);
37  parser.setErrorHandler(new DefaultErrorStrategy());
38  parser.getInterpreter().setPredictionMode(PredictionMode.LL);
39  visitor.visit(parser.output());
40  }
41  }
42 
43  return visitor;
44  }
45 
46  public String [] getParameters() {
47  return parameters.toArray(new String [0]);
48  }
49 
50  @Override
52  for(int index = 1; index < ctx.IDENTIFIER().size(); index++)
53  parameters.add(ctx.IDENTIFIER(index).getText());
54 
55  return null;
56  }
57 }
it.unical.mat.parsers.pddl.PDDLParser
Definition: PDDLParser.java:15
it.unical.mat.parsers.pddl.pddl_parser_base.PDDLGrammarLexer
Definition: PDDLGrammarLexer.java:13
it.unical.mat.parsers.pddl.pddl_parser_base.PDDLGrammarBaseVisitor
Definition: PDDLGrammarBaseVisitor.java:13
it.unical.mat.parsers.pddl.pddl_parser_base.PDDLGrammarParser.AtomContext
Definition: PDDLGrammarParser.java:82
it.unical.mat.parsers.pddl.PDDLParser.visitAtom
Void visitAtom(PDDLGrammarParser.AtomContext ctx)
Definition: PDDLParser.java:51
it.unical.mat.parsers.pddl.pddl_parser_base.PDDLGrammarParser
Definition: PDDLGrammarParser.java:13