Exemple #1
0
 public static void VisitAll(Expression gdl, GdlVisitor visitor)
 {
     visitor.VisitGdl(gdl);
     var rule = gdl as Implication;
     if (rule != null)
         VisitRule(rule, visitor);
     else
         VisitLiteral(gdl, visitor);
 }
Exemple #2
0
 public static void VisitTerm(Term term, GdlVisitor visitor)
 {
     visitor.VisitTerm(term);
     var constant = term as TermObject;
     if (constant != null)
         visitor.VisitConstant(constant);
     else if (term is TermVariable)
         visitor.VisitVariable((TermVariable) term);
     else if (term is TermFunction)
         VisitFunction((TermFunction) term, visitor);
     else
         throw new Exception("Unexpected Term type " + term.GetType());
 }
Exemple #3
0
 private static void VisitLiteral(Expression literal, GdlVisitor visitor)
 {
     visitor.VisitLiteral(literal);
     var fact = literal as Fact;
     if (fact != null)
     {
         if (fact.RelationName == GameContainer.Parser.TokDistinct)
             VisitDistinct(fact, visitor);
         else
             VisitSentence(fact, visitor);
     }
     else if (literal is Negation)
         VisitNot((Negation) literal, visitor);
     else if (literal is Disjunction)
         VisitOr((Disjunction) literal, visitor);
     else
         throw new Exception("Unexpected GdlLiteral type " + literal.GetType());
 }
Exemple #4
0
        private static void VisitOr(Disjunction or, GdlVisitor visitor)
        {
            visitor.VisitOr(or);

            var expressions = or.GetDisjuncts().ToList();
            for (int i = 0; i < expressions.Count(); i++)
                VisitAll(expressions[i], visitor);
        }
Exemple #5
0
 private static void VisitNot(Negation not, GdlVisitor visitor)
 {
     visitor.VisitNot(not);
     VisitAll(not.Negated, visitor);
 }
Exemple #6
0
 private static void VisitFunction(TermFunction function, GdlVisitor visitor)
 {
     visitor.VisitFunction(function);
     VisitTerms(function.Arguments, visitor);
 }
Exemple #7
0
 private static void VisitDistinct(Fact distinct, GdlVisitor visitor)
 {
     visitor.VisitDistinct(distinct);
     VisitTerm(distinct.GetTerm(0), visitor);
     VisitTerm(distinct.GetTerm(1), visitor);
 }
Exemple #8
0
 internal static void VisitTerms(IEnumerable<Term> terms, GdlVisitor visitor)
 {
     foreach(var term in terms)
         VisitTerm(term, visitor);
 }
Exemple #9
0
 public static void VisitAll(ICollection<Expression> collection, GdlVisitor visitor)
 {
     foreach (Expression gdl in collection)
         VisitAll(gdl, visitor);
 }
Exemple #10
0
 private static void VisitSentence(Fact sentence, GdlVisitor visitor)
 {
     visitor.VisitSentence(sentence);
     VisitRelation(sentence, visitor);
 }
Exemple #11
0
 private static void VisitRule(Implication rule, GdlVisitor visitor)
 {
     visitor.VisitRule(rule);
     VisitAll(rule.Consequent, visitor);
     VisitAll(rule.Antecedents.Constituents, visitor);
 }
Exemple #12
0
 private static void VisitRelation(Fact relation, GdlVisitor visitor)
 {
     visitor.VisitRelation(relation);
     VisitTerms(relation.GetTerms(), visitor);
 }