예제 #1
0
        private Cagirma cagirmaParseEt()
        {
            Cagirma c = new Cagirma();

            tokenListesi._sayac--;
            Token t = tokenListesi.tokenAl();

            if (t._tokenTuru == Tokenlar.Tanim)
            {
                c.ad = t._tokenDegeri;
            }
            if (tokenListesi.gozat()._tokenTuru == Tokenlar.SolParantez)
            {
                tokenListesi._sayac++;
            }
            if (tokenListesi.gozat()._tokenTuru == Tokenlar.SagParantez)
            {
                tokenListesi._sayac++;
            }
            else
            {
                c.argumanlar = cagirmaArgumaniParseEt();
            }
            return(c);
        }
예제 #2
0
        private void parseEt()
        {
            while (calisiyorMu)
            {
                t = tokenListesi.tokenAl();

                if (t._tokenTuru == Tokenlar.hazirKullan)
                {
                    string kutuphane = hazirKullanParseEt();
                    hazirKullanListesi.Add(kutuphane);
                }
                else if (t._tokenTuru == Tokenlar.Fonksiyon)
                {
                    Fonksiyon f = fonksiyonParseEt();
                    if (suAnkiBlok == null)
                    {
                        suAnkiBlok = f;
                    }
                    else
                    {
                        suAnkiBlok.durumListesi.Add(new Dondurme());
                        agac.Add(suAnkiBlok);
                        suAnkiBlok = f;
                    }
                }
                else if (t._tokenTuru == Tokenlar.Tanim)
                {
                    if (tokenListesi.gozat()._tokenTuru == Tokenlar.Esittir)
                    {
                        Atama a = atamaParseEt();
                        suAnkiBlok.durumListesi.Add(a);
                    }
                    else if (tokenListesi.gozat()._tokenTuru == Tokenlar.SolParantez)
                    {
                        Cagirma c = cagirmaParseEt();
                        suAnkiBlok.durumListesi.Add(c);
                    }
                }
                else if (t._tokenTuru == Tokenlar.Dondur)
                {
                    Dondurme d = dondurmeParseEt();
                    suAnkiBlok.durumListesi.Add(d);
                }
                else if (t._tokenTuru == Tokenlar.SagParantez)
                {
                    if (suAnkiBlok is Fonksiyon)
                    {
                        suAnkiBlok.durumListesi.Add(new Dondurme());
                        agac.Add(suAnkiBlok);
                        suAnkiBlok = null;
                    }
                }
                else if (t._tokenTuru == Tokenlar.EOF)
                {
                    agac.Add(suAnkiBlok);
                    calisiyorMu = false;
                }
            }
        }
예제 #3
0
 private void cagirmaDerle(Cagirma c)
 {
     c.argumanlar.Reverse();
     foreach (Ifade e in c.argumanlar)
     {
         ifadeDerle(e);
     }
     Yaz("Cagir " + c.ad);
 }