Exemple #1
0
        public string Visit(AST_Asignacion node)
        {
            string exp = node.Exp.Visit(this);

            if (data.ContainsValue(exp))
            {
                // Load STR
                var exp2 = methodcontext.GenLocal("exp", true);
                methodcontext.Staments.Add(new CIL_LoadStr(exp, exp2));
                exp = exp2;
                return(exp);
            }
            else if (methodcontext.GetId(node.Id) == null && methodcontext.arg.Contains(node.Id))
            {
                // arg
                methodcontext.Staments.Add(new CIL_Asig(node.Id, exp, "var"));
                return(exp);
            }
            else if (methodcontext.GetId(node.Id) == null && methodcontext.actual_type.HasAttr(node.Id))
            {
                // SetAttr
                //methodcontext.Staments.Add(new CIL_ExceptionCond("self", "0", "error_null"));
                methodcontext.Staments.Add(new CIL_SetAttr("self", node.Id, exp, methodcontext.actual_type.Name));
                return(exp);
            }
            else
            {
                methodcontext.Staments.Add(new CIL_Asig(methodcontext.GetId(node.Id), exp, "var"));
                return(exp);
            }
        }
Exemple #2
0
        public Base_Object_Value Visit(AST_Asignacion node)
        {
            Base_Object_Value y = node.Exp.Visit(this);

            memo.SetValue(node.Id, y);
            return(y);
        }
Exemple #3
0
        public bool Visit(AST_Asignacion node)
        {
            if (!node.Exp.Visit(this))
            {
                return(false);
            }
            var x = CurrContext.GetType(node.Id);

            //if (x.Name != node.Exp.MyType.Name)
            if (SemanticType.LCA(x, node.Exp.MyType).Name != x.Name)
            {
                CurrErrorLoger.LogError(node.row, node.col, "El tipo de " + node.Exp.MyType.Name + " no se conforma a " + x.Name);
                return(false);
            }
            node.MyType = node.Exp.MyType;
            return(true);
        }
        public bool Visit(AST_Asignacion node)
        {
            bool solve        = true;
            bool visit_result = node.Exp.Visit(this);

            if (!visit_result)
            {
                solve = false;
            }
            if (!CurrContext.IsDefine(node.Id))
            {
                solve = false;
                CurrErrorLoger.LogError(node.row, node.col, "Variable " + node.Id + " no definida");
            }
            CurrContext.Define(node.Id);
            return(solve);
        }
Exemple #5
0
 public bool Visit(AST_Asignacion node)
 {
     return(true);
 }
Exemple #6
0
 public bool Visit(AST_Asignacion node)
 {
     throw new NotImplementedException();
 }