Ejemplo n.º 1
0
        public override int VisitDef_const([NotNull] GrammarParser.Def_constContext context)
        {
            VarConstItem newItem = createConst(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_const(context);
            return(20);
        }
Ejemplo n.º 2
0
 public void AddVarConstItem(VarConstItem item)
 {
     varConstTable[item.GetName()] = item;
 }