Пример #1
0
        private Atama atamaParseEt()
        {
            string ad = tl.TokenAl().Deger;

            tl.IleriGit();
            Ifade ifade = ifadeParseEt();

            return(new Atama(ad, ifade));
        }
Пример #2
0
        private Ifade ifadeParseEt()
        {
            Ifade donus = null;
            Token t     = tl.TokenAl();

            if (t.Tur == TokenTuru.TamSayi)
            {
                donus = new Tamsayi(Convert.ToInt32(t.Deger));
            }
            else if (t.Tur == TokenTuru.Tanim)
            {
                donus = new Tanim(t.Deger);
            }
            if (tl.Gozat().Tur == TokenTuru.Arti)
            {
                Ifade     solIfade = donus;
                TokenTuru islem    = tl.TokenAl().Tur;
                Ifade     sagIfade = ifadeParseEt();
                donus = new MatematikIfadesi(solIfade, islem, sagIfade);
            }
            return(donus);
        }
Пример #3
0
 private void ifadeDerle(Ifade e)
 {
     if (e is TamsayiKalibi)
     {
         Yaz("PushTamsayi " + ((TamsayiKalibi)e).deger);
     }
     else if (e is StringKalibi)
     {
         Yaz("PushString " + ((StringKalibi)e).deger);
     }
     else if (e is Tanim)
     {
         Yaz("PushTanim " + ((Tanim)e).deger);
     }
     else if (e is CagirmaIfadesi)
     {
         CagirmaIfadesi ci = (CagirmaIfadesi)e;
         foreach (Ifade exp in ci.argumanlar)
         {
             ifadeDerle(exp);
         }
         Yaz("Cagir " + ci.ad);
     }
     else if (e is MatematikIfadesi)
     {
         MatematikIfadesi mi = (MatematikIfadesi)e;
         ifadeDerle(mi.solIfade);
         ifadeDerle(mi.sagIfade);
         Yaz(mi.islem.ToString());
     }
     else if (e is ParantezIfadesi)
     {
         ParantezIfadesi pi = (ParantezIfadesi)e;
         ifadeDerle(pi.deger);
     }
 }
Пример #4
0
 public MatematikIfadesi(Ifade solIfade, TokenTuru islem, Ifade sagIfade)
 {
     this.solIfade = solIfade;
     this.islem    = islem;
     this.sagIfade = sagIfade;
 }
Пример #5
0
 public Atama(string ad, Ifade deger)
 {
     this.ad    = ad;
     this.deger = deger;
 }
Пример #6
0
        private Ifade expressionParseEt()
        {
            Ifade donus = null;
            Token t     = tokenListesi.tokenAl();

            if (tokenListesi.gozat()._tokenTuru == Tokenlar.SolParantez)
            {
                CagirmaIfadesi c = new CagirmaIfadesi();
                if (t._tokenTuru == Tokenlar.Tanim)
                {
                    c.ad = t._tokenDegeri;
                }
                tokenListesi._sayac++;
                if (tokenListesi.gozat()._tokenTuru == Tokenlar.SagParantez)
                {
                    c.argumanlar = new List <Ifade>();
                    donus        = c;
                }
                else
                {
                    c.argumanlar = cagirmaArgumaniParseEt();
                    donus        = c;
                }
            }
            else if (t._tokenTuru == Tokenlar.TamSayiKalibi)
            {
                TamsayiKalibi tsk = new TamsayiKalibi();
                tsk.deger = Convert.ToInt32(t._tokenDegeri);
                donus     = tsk;
            }
            else if (t._tokenTuru == Tokenlar.StringKalibi)
            {
                StringKalibi sk = new StringKalibi();
                sk.deger = t._tokenDegeri;
                donus    = sk;
            }
            else if (t._tokenTuru == Tokenlar.Tanim)
            {
                Tanim tanim = new Tanim();
                tanim.deger = t._tokenDegeri;
                donus       = tanim;
            }
            else if (t._tokenTuru == Tokenlar.SolParantez)
            {
                Ifade ifade = expressionParseEt();

                if (tokenListesi.gozat()._tokenTuru == Tokenlar.SagParantez)
                {
                    tokenListesi._sayac++;
                }

                ParantezIfadesi p = new ParantezIfadesi();
                p.deger = ifade;

                if (tokenListesi.gozat()._tokenTuru == Tokenlar.Topla || tokenListesi.gozat()._tokenTuru == Tokenlar.Cikar || tokenListesi.gozat()._tokenTuru == Tokenlar.Carp || tokenListesi.gozat()._tokenTuru == Tokenlar.Bol)
                {
                    tokenListesi._sayac++;
                    Ifade            e  = expressionParseEt();
                    MatematikIfadesi mi = new MatematikIfadesi();
                    mi.solIfade = p;
                    mi.sagIfade = e;
                    mi.islem    = tokenListesi.gozat()._tokenTuru;
                    donus       = mi;
                }
                else
                {
                    donus = p;
                }
            }
            if (tokenListesi.gozat()._tokenTuru == Tokenlar.Topla || tokenListesi.gozat()._tokenTuru == Tokenlar.Cikar || tokenListesi.gozat()._tokenTuru == Tokenlar.Carp || tokenListesi.gozat()._tokenTuru == Tokenlar.Bol)
            {
                MatematikIfadesi mi = new MatematikIfadesi();
                mi.islem = tokenListesi.gozat()._tokenTuru;
                tokenListesi._sayac++;
                mi.solIfade = donus;
                mi.sagIfade = expressionParseEt();
                donus       = mi;
            }
            return(donus);
        }