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); } }
public Base_Object_Value Visit(AST_Asignacion node) { Base_Object_Value y = node.Exp.Visit(this); memo.SetValue(node.Id, y); return(y); }
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); }
public bool Visit(AST_Asignacion node) { return(true); }
public bool Visit(AST_Asignacion node) { throw new NotImplementedException(); }