Beispiel #1
0
    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);
    }
Beispiel #2
0
        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());
        }
Beispiel #3
0
        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());
        }
Beispiel #4
0
 public VMvariable(MyVariable root) : base(root)
 {
     this.root = root;
 }
Beispiel #5
0
        public VMinputVariable(MyVariable root, VMinput parent) : base(root)
        {
            this.parent = parent;

            this.CommandRemove = new DelegateCommand <object>(this.Remove);
        }
Beispiel #6
0
    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);
    }