EmbASP-Java
DLVParserBaseVisitorImplementation.java
1 package it.unical.mat.parsers.asp.dlv;
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 
15  private DLVParserBaseVisitorImplementation(final ASPDataCollection answerSets) {
16  this.answerSets = answerSets;
17  }
18 
19  @Override
20  public Void visitSimpleModel(DLVParser.SimpleModelContext ctx) {
21  answerSets.addAnswerSet();
22 
23  return visitChildren(ctx);
24  }
25 
26  @Override
27  public Void visitWeightedModel(DLVParser.WeightedModelContext ctx) {
28  answerSets.addAnswerSet();
29 
30  return visitChildren(ctx);
31  }
32 
33  @Override
34  public Void visitWitness(DLVParser.WitnessContext ctx) {
35  answerSets.addAnswerSet();
36 
37  return visitChildren(ctx);
38  }
39 
40  @Override
41  public Void visitCost_level(DLVParser.Cost_levelContext ctx) {
42  answerSets.storeCost(Integer.parseInt(ctx.INTEGER_CONSTANT(1).getText()), Integer.parseInt(ctx.INTEGER_CONSTANT(0).getText()));
43 
44  return null;
45  }
46 
47  @Override
48  public Void visitPredicate(DLVParser.PredicateContext ctx) {
49  answerSets.storeAtom(ctx.getText());
50 
51  return null;
52  }
53 
54  public static void parse(final ASPDataCollection answerSets, final String atomsList, final boolean two_stageParsing) {
55  final CommonTokenStream tokens = new CommonTokenStream(new DLVLexer(CharStreams.fromString(atomsList)));
56  final DLVParser parser = new DLVParser(tokens);
58 
59  if(!two_stageParsing) {
60  visitor.visit(parser.output());
61 
62  return;
63  }
64 
65  parser.getInterpreter().setPredictionMode(PredictionMode.SLL);
66  parser.removeErrorListeners();
67  parser.setErrorHandler(new BailErrorStrategy());
68 
69  try {
70  visitor.visit(parser.output());
71  } catch (final RuntimeException exception) {
72  if(exception.getClass() == RuntimeException.class && exception.getCause() instanceof RecognitionException) {
73  tokens.seek(0);
74  parser.addErrorListener(ConsoleErrorListener.INSTANCE);
75  parser.setErrorHandler(new DefaultErrorStrategy());
76  parser.getInterpreter().setPredictionMode(PredictionMode.LL);
77  visitor.visit(parser.output());
78  }
79  }
80  }
81 }
it.unical.mat.parsers.asp.dlv.DLVParser.Cost_levelContext
Definition: DLVParser.java:360
it.unical.mat.parsers.asp.dlv.DLVParser.SimpleModelContext
Definition: DLVParser.java:105
it.unical.mat.parsers.asp.dlv.DLVParser.WeightedModelContext
Definition: DLVParser.java:139
it.unical.mat.parsers.asp.ASPDataCollection
Definition: ASPDataCollection.java:3
it.unical.mat.parsers.asp.dlv.DLVParserBaseVisitor
Definition: DLVParserBaseVisitor.java:13
it.unical.mat.parsers.asp.dlv.DLVLexer
Definition: DLVLexer.java:13
it.unical.mat.parsers.asp.dlv.DLVParser
Definition: DLVParser.java:13
it.unical.mat.parsers.asp.dlv.DLVParserBaseVisitorImplementation
Definition: DLVParserBaseVisitorImplementation.java:12
it.unical.mat.parsers.asp.dlv.DLVParser.WitnessContext
Definition: DLVParser.java:725
it.unical.mat.parsers.asp.dlv.DLVParser.PredicateContext
Definition: DLVParser.java:534