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)); }
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); }
/// <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) { }
/// <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)); }