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); } }
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); }