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())); }
/// <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)); }
/// <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) { }