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);
        }
Esempio n. 2
0
 /// <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));
 }