public static bool Tag_mi(string girdi) /*Tag kontrolü yapar*/ { int i; string icerideki; Stack tutulacak = new Stack(girdi.Length); for (i = 0; i < girdi.Length; i++) { if (((girdi[i] == 'u') || (girdi[i] == 'b') || (girdi[i] == 'h') || (girdi[i] == 'p')) && (girdi[i - 1] == '<')) tutulacak.Push(Convert.ToString(girdi[i])); if (((girdi[i] == 'u') || (girdi[i] == 'b') || (girdi[i] == 'h') || (girdi[i] == 'p')) && (girdi[i - 1] == '/')) { icerideki = tutulacak.Pop(); if (icerideki != Convert.ToString(girdi[i])) return false; } } if (tutulacak.IsEmpty()) /*Stack te eleman kaldı mı?*/ return true; else return false; }/*Tag_mi*/
}/*Hangislem*/ public static string Cozumleme(string al) /*Cözümleme yapilmasi*/ { Stack anastack = new Stack(al.Length); Stack gecicistack = new Stack(al.Length); string gorev = "", kelime = "", sonuc = ""; bool state = false; int i; for (i = 0; i < al.Length; i++) { if (al[i] == '<') { state = true; if (kelime != "") { while ((gorev = anastack.Pop()) != null) { kelime = Hangislem(gorev[1], kelime); gecicistack.Push(gorev); } while ((gorev = gecicistack.Pop()) != null) anastack.Push(gorev); sonuc += kelime; } kelime = ""; gorev += al[i]; } else if (state && al[i] == '>') { gorev += al[i]; if (gorev[1] == '/') anastack.Pop(); else anastack.Push(gorev); gorev = ""; state = false; } else if (state) gorev += al[i]; else kelime += al[i]; } sonuc += kelime; return sonuc; }/*Cozumleme*/