Exemple #1
0
        private VarConstItem createVar(GrammarParser.Def_varContext context)
        {
            String   name, value = "";
            DataType dt = DataType.Int;

            name = context.Identifier().GetText();
            if (context.Data_type_bool() != null)
            {
                dt    = DataType.Bool;
                value = BoolToInt(context.Bool().GetText());
            }
            else if (context.Data_type_double() != null)
            {
                dt    = DataType.Double;
                value = context.Double().GetText();
            }
            else
            {
                value = context.Int().GetText();
            }

            int addr = 0;

            if (inFunction)
            {
                addr = inFunctionAddress;
            }
            else
            {
                addr = globalAddress;
            }
            return(new VarConstItem(name, value, VarConstType.Var, dt, addr, level));
        }
Exemple #2
0
        public override int VisitDef_var([NotNull] GrammarParser.Def_varContext context)
        {
            VarConstItem newItem = createVar(context);

            if (inFunction)
            {
                if (!localSymbolTable.ContainsVarConstItem(newItem.GetName()))
                {
                    localSymbolTable.AddVarConstItem(newItem);
                }
                else
                {
                    errors.Add("Promena " + newItem.GetName() + " uz existuje!\n");
                    Console.WriteLine("Promena " + newItem.GetName() + " uz existuje!\n");
                }
                inFunctionAddress += 1;
            }
            else
            {
                if (!globalSymbolTable.ContainsVarConstItem(newItem.GetName()))
                {
                    globalSymbolTable.AddVarConstItem(newItem);
                }
                else
                {
                    errors.Add("Promena " + newItem.GetName() + " uz existuje!\n");
                    Console.WriteLine("Promena " + newItem.GetName() + " uz existuje!\n");
                }
                globalAddress += 1;
            }

            Boolean isNeg = isNegative(newItem.GetValue());
            String  value = removeUnaryOperator(newItem.GetValue());

            AddLIT(value);
            if (isNeg)
            {
                AddOPR(Instruction.UNARY_MINUS);
            }

            base.VisitDef_var(context);
            return(0);
        }
Exemple #3
0
 /// <summary>
 /// Enter a parse tree produced by <see cref="GrammarParser.def_var"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void EnterDef_var([NotNull] GrammarParser.Def_varContext context)
 {
 }
Exemple #4
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="GrammarParser.def_var"/>.
 /// <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 VisitDef_var([NotNull] GrammarParser.Def_varContext context)
 {
     return(VisitChildren(context));
 }