public override object VisitBodyAssignVariable(FaParser.BodyAssignVariableContext context) { string id = context.ID().GetText(); object value = VisitExpression(context.expression()); MyVariable var = new MyVariable(id, getType(value), value); object varExist = ExistInLast(id); if (varExist != null) { if (!(varExist is MyFunction)) { queue.Last()[id] = var; } else { Debug.LogError("Este identificador ya ha sido asignado a una funcion"); // Console.WriteLine("Este identificador ya ha sido asignado a una funcion"); MyConsole.main.AppendText("Este identificador ya ha sido asignado a una funcion"); } } else { queue.Last().Add(id, var); } return(null); }
public static DiagramLine ExtractFromMyVariable(MyVariable variable) { ObjectToken body = (ObjectToken)variable.Value; List <ObjectPropertyToken> propertirs = body.Value as List <ObjectPropertyToken>; DiagramNodeBuilder nodeBuilder = new DiagramNodeBuilder(variable.Name); for (int i = 0; i < propertirs.Count; i++) { switch (propertirs[i].IdentifierToken.Value) { case "width": nodeBuilder.BuildWidth((int)propertirs[i].Value.Value); break; case "color": nodeBuilder.BuildDrawColor((string)propertirs[i].Value.Value); break; case "arrow": nodeBuilder.BuildArrow((string)propertirs[i].Value.Value); break; } } return(nodeBuilder.Build()); }
public static DiagramNode ExtractFromMyVariable(MyVariable variable) { ObjectToken body = (ObjectToken)variable.Value; List <ObjectPropertyToken> propertirs = body.Value as List <ObjectPropertyToken>; DiagramNodeBuilder nodeBuilder = new DiagramNodeBuilder(variable.Name); for (int i = 0; i < propertirs.Count; i++) { switch (propertirs[i].IdentifierToken.Value) { case "type": nodeBuilder.BuildType((string)propertirs[i].Value.Value); break; case "drawColor": nodeBuilder.BuildDrawColor((string)propertirs[i].Value.Value); break; case "fillColor": nodeBuilder.BuildFillColor((string)propertirs[i].Value.Value); break; case "units": nodeBuilder.BuildUnits((int)propertirs[i].Value.Value); break; } } return(nodeBuilder.Build()); }
public VMvariable(MyVariable root) : base(root) { this.root = root; }
public VMinputVariable(MyVariable root, VMinput parent) : base(root) { this.parent = parent; this.CommandRemove = new DelegateCommand <object>(this.Remove); }
public override object VisitFunction_call(FaParser.Function_callContext context) { String id = context.ID().GetText(); object instance = Exist(id); if (context.expression() != null) { int nparams = context.expression().Length; if (instance is MyFunction) { MyFunction func = (MyFunction)instance; if (nparams == func.nparams) { Dictionary <string, Instance> memAmbit = new Dictionary <string, Instance>(); for (int i = 0; i < nparams; i++) { object value = Visit(context.expression(i)); MyVariable xvar = new MyVariable(func.namesParams.ElementAt(i), getType(value), value); memAmbit.Add(func.namesParams.ElementAt(i), xvar); } queue.AddLast(memAmbit); // Tebug.Log("queue: "+ PrintQueue(queue)) ; object res = Visit((IParseTree)func.instructions); // Tebug.Log(" EVALUADO 3 : " + (string)res); queue.RemoveLast(); return(res == null ? (object)"nada" : res); } else { Debug.LogError("Esta funcion recibe un número diferente de parametros"); // Console.WriteLine("Esta funcion recibe un número diferente de parametros"); MyConsole.main.AppendText("Esta funcion recibe un número diferente de parametros"); } } else { Debug.LogError("Este ID no pertenece a una funcion"); // Console.WriteLine("Este ID no pertenece a una funcion"); MyConsole.main.AppendText("Este ID no pertenece a una funcion"); } } else { if (instance is MyFunction) { MyFunction func = (MyFunction)instance; if (func.nparams == 0) { Dictionary <string, Instance> memAmbit = new Dictionary <string, Instance>(); queue.AddLast(memAmbit); object res = Visit((IParseTree)func.instructions); // Tebug.Log(" EVALUADO 4 : " + res); queue.RemoveLast(); return(res == null ? (object)"nada" : res); } else { Debug.LogError("Se esperaban cero parametros para esta func."); // Console.WriteLine("Se esperaban cero parametros para esta func."); MyConsole.main.AppendText("Se esperaban cero parametros para esta func."); } } else { Debug.LogError("No ha sido declarada una funcion con este nombre"); // Console.WriteLine("No ha sido declarada una funcion con este nombre"); MyConsole.main.AppendText("No ha sido declarada una funcion con este nombre"); } } return(null); }