EmbASP-CSharp
DLVHEXParserBaseVisitorImplementation.cs
1 using System;
2 using Antlr4.Runtime;
3 using Antlr4.Runtime.Atn;
4 
6 {
8  {
9  private readonly IASPDataCollection answerSets;
10 
12  {
13  this.answerSets = answerSets;
14  }
15 
16  public override object VisitModel(DLVHEXParser.ModelContext context)
17  {
18  answerSets.AddAnswerSet();
19 
20  return VisitChildren(context);
21  }
22 
23  public override object VisitLevel(DLVHEXParser.LevelContext context)
24  {
25  answerSets.StoreCost(Int32.Parse(context.INTEGER()[1].GetText()), Int32.Parse(context.INTEGER()[0].GetText()));
26 
27  return null;
28  }
29 
30  public override object VisitPredicate_atom(DLVHEXParser.Predicate_atomContext context)
31  {
32  answerSets.StoreAtom(context.GetText());
33 
34  return null;
35  }
36 
37  public override object VisitWitness(DLVHEXParser.WitnessContext context)
38  {
39  answerSets.AddAnswerSet();
40 
41  return VisitChildren(context);
42  }
43 
44  public static void Parse(IASPDataCollection answerSets, string atomsList, bool two_stageParsing)
45  {
46  CommonTokenStream tokens = new CommonTokenStream(new DLVHEXLexer(CharStreams.fromstring(atomsList)));
47  DLVHEXParser parser = new DLVHEXParser(tokens);
49 
50  if (!two_stageParsing)
51  {
52  visitor.Visit(parser.output());
53 
54  return;
55  }
56 
57  parser.Interpreter.PredictionMode = PredictionMode.SLL;
58 
59  parser.RemoveErrorListeners();
60 
61  parser.ErrorHandler = new BailErrorStrategy();
62 
63  try
64  {
65  visitor.Visit(parser.output());
66  }
67  catch (SystemException exception)
68  {
69  if (exception.GetBaseException() is RecognitionException)
70  {
71  tokens.Seek(0);
72  parser.AddErrorListener(ConsoleErrorListener<object>.Instance);
73 
74  parser.ErrorHandler = new DefaultErrorStrategy();
75  parser.Interpreter.PredictionMode = PredictionMode.LL;
76 
77  visitor.Visit(parser.output());
78  }
79  }
80  }
81  }
82 }
it.unical.mat.parsers.asp.dlvhex
Definition: DLVHEXParserBaseVisitorImplementation.cs:5
it.unical.mat.parsers.asp.dlvhex.DLVHEXParserBaseVisitorImplementation.VisitLevel
override object VisitLevel(DLVHEXParser.LevelContext context)
Visit a parse tree produced by DLVHEXParser.level.
Definition: DLVHEXParserBaseVisitorImplementation.cs:23
it.unical.mat.parsers.asp.dlvhex.DLVHEXParserBaseVisitorImplementation.VisitPredicate_atom
override object VisitPredicate_atom(DLVHEXParser.Predicate_atomContext context)
Visit a parse tree produced by DLVHEXParser.predicate_atom.
Definition: DLVHEXParserBaseVisitorImplementation.cs:30
DLVHEXParserBaseVisitor
This class provides an empty implementation of IDLVHEXParserVisitor<Result>, which can be extended to...
Definition: DLVHEXParserBaseVisitor.cs:35
it.unical.mat.parsers.asp.dlvhex.DLVHEXParserBaseVisitorImplementation.VisitWitness
override object VisitWitness(DLVHEXParser.WitnessContext context)
Visit a parse tree produced by DLVHEXParser.witness.
Definition: DLVHEXParserBaseVisitorImplementation.cs:37
it.unical.mat.parsers.asp.dlvhex.DLVHEXParserBaseVisitorImplementation.VisitModel
override object VisitModel(DLVHEXParser.ModelContext context)
Visit a parse tree produced by the Model labeled alternative in DLVHEXParser.answer_set.
Definition: DLVHEXParserBaseVisitorImplementation.cs:16
it.unical.mat.parsers.asp.dlvhex.DLVHEXParserBaseVisitorImplementation
Definition: DLVHEXParserBaseVisitorImplementation.cs:7
it.unical.mat.parsers.asp.IASPDataCollection
Definition: IASPDataCollection.cs:3