Beispiel #1
0
        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*/
Beispiel #2
0
        }/*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*/