Esempio n. 1
0
        public override int VisitExpression([NotNull] CBluntParser.ExpressionContext context)
        {
#if DEBUG
            Console.WriteLine("VisitExpression");
#endif

            var parameter      = context.parameter();
            var assignmentType = GetParameterType(context, parameter);

            if (!AddToExpressionStore(assignmentType))
            {
                return(1);
            }

            var calculationCount = context.calculation().Count();

            // With no calculations, it is simply the assignment type
            if (calculationCount == 0)
            {
                SymbolTable.ExpressionStoreLinkedList.Last.Value.Type = assignmentType;
                return(0);
            }

            for (int i = 0; i < calculationCount; ++i)
            {
                if (Visit(context.calculation(i)) == 1)
                {
                    return(1);
                }
            }

            return(0);
        }
Esempio n. 2
0
        public override int VisitExpression([NotNull] CBluntParser.ExpressionContext context)
        {
#if DEBUG
            Console.WriteLine("VisitExpression");
#endif
            Visit(context.parameter());
            for (int counter = 0; counter < context.calculation().Count(); ++counter)
            {
                Visit(context.calculation(counter));
            }
            return(0);
        }
Esempio n. 3
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="CBluntParser.expression"/>.
 /// <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 VisitExpression([NotNull] CBluntParser.ExpressionContext context)
 {
     return(VisitChildren(context));
 }