public override object VisitEqualityExpr([NotNull] ChessVCParser.EqualityExprContext context)
 {
     if (context.bop != null)
     {
         object lhs = deref(Visit(context.equalityExpr()));
         object rhs = deref(Visit(context.relationalExpr()));
         if (lhs is ChoiceVariable)
         {
             lhs = ((ChoiceVariable)lhs).Value;
         }
         if (lhs is string && rhs is string)
         {
             return(context.bop.Text == "==" ? (string)lhs == (string)rhs : (string)lhs != (string)rhs);
         }
         throw new Exception("Unsupported equality comparison");
     }
     return(Visit(context.relationalExpr()));
 }
Beispiel #2
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="ChessVCParser.equalityExpr"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitEqualityExpr([NotNull] ChessVCParser.EqualityExprContext context)
 {
     return(VisitChildren(context));
 }
Beispiel #3
0
 /// <summary>
 /// Exit a parse tree produced by <see cref="ChessVCParser.equalityExpr"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitEqualityExpr([NotNull] ChessVCParser.EqualityExprContext context)
 {
 }