EmbASP-Java
DLVHEXParserBaseVisitorImplementation.java
1 package it.unical.mat.parsers.asp.dlvhex;
2 
3 import it.unical.mat.parsers.asp.ASPDataCollection;
4 import org.antlr.v4.runtime.BailErrorStrategy;
5 import org.antlr.v4.runtime.CharStreams;
6 import org.antlr.v4.runtime.CommonTokenStream;
7 import org.antlr.v4.runtime.ConsoleErrorListener;
8 import org.antlr.v4.runtime.DefaultErrorStrategy;
9 import org.antlr.v4.runtime.RecognitionException;
10 import org.antlr.v4.runtime.atn.PredictionMode;
11 
13  private final ASPDataCollection answerSets;
14 
16  this.answerSets = answerSets;
17  }
18 
19  @Override
20  public Void visitModel(DLVHEXParser.ModelContext ctx) {
21  answerSets.addAnswerSet();
22 
23  return visitChildren(ctx);
24  }
25 
26  @Override
27  public Void visitLevel(DLVHEXParser.LevelContext ctx) {
28  answerSets.storeCost(Integer.parseInt(ctx.INTEGER(1).getText()), Integer.parseInt(ctx.INTEGER(0).getText()));
29 
30  return null;
31  }
32 
33  @Override
34  public Void visitPredicate_atom(DLVHEXParser.Predicate_atomContext ctx) {
35  answerSets.storeAtom(ctx.getText());
36 
37  return null;
38  }
39 
40  @Override
41  public Void visitWitness(DLVHEXParser.WitnessContext ctx) {
42  answerSets.addAnswerSet();
43 
44  return visitChildren(ctx);
45  }
46 
47  public static void parse(final ASPDataCollection answerSets, final String atomsList, final boolean two_stageParsing) {
48  final CommonTokenStream tokens = new CommonTokenStream(new DLVHEXLexer(CharStreams.fromString(atomsList)));
49  final DLVHEXParser parser = new DLVHEXParser(tokens);
51 
52  if(!two_stageParsing) {
53  visitor.visit(parser.output());
54 
55  return;
56  }
57 
58  parser.getInterpreter().setPredictionMode(PredictionMode.SLL);
59  parser.removeErrorListeners();
60  parser.setErrorHandler(new BailErrorStrategy());
61 
62  try {
63  visitor.visit(parser.output());
64  } catch (final RuntimeException exception) {
65  if(exception.getClass() == RuntimeException.class && exception.getCause() instanceof RecognitionException) {
66  tokens.seek(0);
67  parser.addErrorListener(ConsoleErrorListener.INSTANCE);
68  parser.setErrorHandler(new DefaultErrorStrategy());
69  parser.getInterpreter().setPredictionMode(PredictionMode.LL);
70  visitor.visit(parser.output());
71  }
72  }
73  }
74 }
it.unical.mat.parsers.asp.dlvhex.DLVHEXParser.WitnessContext
Definition: DLVHEXParser.java:613
it.unical.mat.parsers.asp.dlvhex.DLVHEXParser.Predicate_atomContext
Definition: DLVHEXParser.java:470
it.unical.mat.parsers.asp.ASPDataCollection
Definition: ASPDataCollection.java:3
it.unical.mat.parsers.asp.dlvhex.DLVHEXLexer
Definition: DLVHEXLexer.java:13
it.unical.mat.parsers.asp.dlvhex.DLVHEXParser.ModelContext
Definition: DLVHEXParser.java:126
it.unical.mat.parsers.asp.dlvhex.DLVHEXParser.LevelContext
Definition: DLVHEXParser.java:370
it.unical.mat.parsers.asp.dlvhex.DLVHEXParserBaseVisitor
Definition: DLVHEXParserBaseVisitor.java:13
it.unical.mat.parsers.asp.dlvhex.DLVHEXParserBaseVisitorImplementation
Definition: DLVHEXParserBaseVisitorImplementation.java:12
it.unical.mat.parsers.asp.dlvhex.DLVHEXParser
Definition: DLVHEXParser.java:13