EmbASP-Python
pddl_parser.py
1 from .pddl_parser_base.PDDLGrammarLexer import PDDLGrammarLexer
2 from .pddl_parser_base.PDDLGrammarParser import PDDLGrammarParser
3 from .pddl_parser_base.PDDLGrammarVisitor import PDDLGrammarVisitor
4 from antlr4 import PredictionMode
5 from antlr4.CommonTokenStream import CommonTokenStream
6 from antlr4.error.ErrorListener import ConsoleErrorListener
7 from antlr4.error.Errors import RecognitionException
8 from antlr4.error.ErrorStrategy import BailErrorStrategy, DefaultErrorStrategy
9 from antlr4.InputStream import InputStream
10 
11 
13  def __init__(self):
14  self._parameters = []
15 
16  @staticmethod
17  def parse(atomsList):
18  tokens = CommonTokenStream(PDDLGrammarLexer(InputStream(atomsList)))
19  parser = PDDLGrammarParser(tokens)
20  visitor = PDDLParser()
21  parser._interp.predictionMode = PredictionMode.SLL
22 
23  parser.removeErrorListeners()
24 
25  parser._errHandler = BailErrorStrategy()
26 
27  try:
28  visitor.visit(parser.output())
29  except RuntimeError as exception:
30  if isinstance(exception, RecognitionException):
31  tokens.seek(0)
32  parser.addErrorListener(ConsoleErrorListener.INSTANCE)
33 
34  parser._errHandler = DefaultErrorStrategy()
35  parser._interp.predictionMode = PredictionMode.LL
36 
37  visitor.visit(parser.output())
38 
39  return visitor
40 
41  def get_parameters(self):
42  return self._parameters
43 
44  def visitAtom(self, ctx):
45  for index in range(1, len(ctx.IDENTIFIER())):
46  self._parameters.append(ctx.IDENTIFIER(index).getText())
47 
48  return None
parsers.pddl.pddl_parser.PDDLParser
Definition: pddl_parser.py:12
parsers.pddl.pddl_parser.PDDLParser._parameters
_parameters
Definition: pddl_parser.py:14
parsers.pddl.pddl_parser_base.PDDLGrammarParser.PDDLGrammarParser
Definition: PDDLGrammarParser.py:22
parsers.pddl.pddl_parser_base.PDDLGrammarVisitor.PDDLGrammarVisitor
Definition: PDDLGrammarVisitor.py:6
parsers.pddl.pddl_parser_base.PDDLGrammarLexer.PDDLGrammarLexer
Definition: PDDLGrammarLexer.py:24