public override Void VisitEquality(PreprocessorLineParser.EqualityContext context) { base.VisitEquality(context); var left = expressionValue.Get(context.expression(0)); var right = expressionValue.Get(context.expression(1)); var op = context.op.Type; bool result; switch (op) { case PreprocessorLineLexer.Equal: result = left == right; break; case PreprocessorLineLexer.NotEqual: result = left != right; break; default: throw new Exception("Invalid equality operator"); } expressionValue.Put(context, result); return(Void.Value); }
/// <summary> /// Exit a parse tree produced by <see cref="PreprocessorLineParser.Equality"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitEquality([NotNull] PreprocessorLineParser.EqualityContext context) { }
/// <summary> /// Visit a parse tree produced by <see cref="PreprocessorLineParser.Equality"/>. /// <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 VisitEquality([NotNull] PreprocessorLineParser.EqualityContext context) { return(VisitChildren(context)); }