Пример #1
0
        void vytvorRegisterOperaciu(object sender, EventArgs e, String op, RegisterInfo r)
        {
            Register temp = null;
            String   id   = modul.getOpId(op);

            if (op == "regC")
            {
                temp = new RegisterC(clickX, clickY, id, r);
            }
            else if (op == "regZ")
            {
                temp = new RegisterZ(clickX, clickY, id, r);
            }
            else if (op == "regZ_index")
            {
                temp = new RegisterZIndex(clickX, clickY, id, r);
            }
            temp.setM(modul);
            modul.objekty.Add(id, temp);
            aktualizujPlochu();
        }
Пример #2
0
        public void nacitajDWKod()
        {
            while (a.token != "")
            {
                if (isToken("]"))
                {
                    return;
                }
                if (isToken("def"))
                {
                    String fMeno = popToken();
                    getToken("[");
                    objekty  = new Dictionary <String, Objekt>();
                    registre = new List <RegisterInfo>();
                    vstupy   = new List <BodkaInfo>();
                    vystupy  = new List <BodkaInfo>();
                    nacitajDWKod();
                    Modul f = new Modul(fMeno, objekty, vstupy, vystupy, registre, poleBodiek, poleIndexov);
                    poleBodiek  = null;
                    poleIndexov = null;
                    moduly.Add(f);
                    if (f.meno != "main")
                    {
                        Projekt.DATABAZA[f.meno] = new ObjektInfo(f.meno, f.meno, vstupy, vystupy);
                    }
                }
                else if (isToken("input"))
                {
                    String   vstup = popToken();
                    IntTuple bit   = getTagIntTuple();
                    vstupy.Add(new BodkaInfo(vstup, bit.a, false, bit.b, false));
                }
                else if (isToken("output"))
                {
                    String   vystup = popToken();
                    IntTuple bit    = getTagIntTuple();
                    vystupy.Add(new BodkaInfo(vystup, bit.a, false, bit.b, false));
                }
                else if (isToken("register"))
                {
                    String   register = popToken();
                    IntTuple bit      = getTagIntTuple();
                    registre.Add(new RegisterInfo(register, bit.a, bit.b));
                }
                else if (isToken("#"))
                {
                    nacitajGraf();
                }
                else
                {
                    getToken("{");
                    String id = popToken();
                    getToken("}");

                    if (isToken("call") || isToken("use"))
                    {
                        String   menoModulu = popToken();
                        IntTuple sur        = getTagIntTuple();
                        volania.Add(new TempPouzitieModulu(moduly.Count, sur, id, menoModulu));
                    }
                    else if (isToken("const"))
                    {
                        List <String> values = new List <String>();
                        getToken("(");
                        while (!isToken(")"))
                        {
                            values.Add(popToken());
                        }
                        IntTuple bit = getTagIntTuple();
                        IntTuple sur = getTagIntTuple();
                        objekty[id] = new Konst(sur.a, sur.b, id, "const", bit.a, bit.b, values.ToArray());
                    }

                    else if (isToken("in"))
                    {
                        String    io  = popToken();
                        IntTuple  sur = getTagIntTuple();
                        BodkaInfo b   = getVstup(io);
                        objekty[id] = new IoOperacia(sur.a, sur.b, id, "in", b);
                    }
                    else if (isToken("out"))
                    {
                        String    io  = popToken();
                        IntTuple  sur = getTagIntTuple();
                        BodkaInfo b   = getVystup(io);
                        objekty[id] = new IoOperacia(sur.a, sur.b, id, "out", b);
                    }
                    else if (isToken("regC"))
                    {
                        String       register = popToken();
                        IntTuple     sur      = getTagIntTuple();
                        RegisterInfo r        = getRegister(register);
                        objekty[id] = new RegisterC(sur.a, sur.b, id, r);
                    }
                    else if (isToken("regZ"))
                    {
                        String       register = popToken();
                        IntTuple     sur      = getTagIntTuple();
                        RegisterInfo r        = getRegister(register);
                        objekty[id] = new RegisterZ(sur.a, sur.b, id, r);
                    }
                    else if (isToken("regZ_index"))
                    {
                        String       register = popToken();
                        IntTuple     sur      = getTagIntTuple();
                        RegisterInfo r        = getRegister(register);
                        objekty[id] = new RegisterZIndex(sur.a, sur.b, id, r);
                    }

                    else if (isToken("change"))
                    {
                        IntTuple bit = getTagIntTuple();
                        IntTuple sur = getTagIntTuple();
                        objekty[id] = new ZmenaBitov(sur.a, sur.b, id, bit.a, bit.b);
                    }
                    else
                    {
                        objekty[id] = nacitajOp(id);
                    }
                }
            }
        }