示例#1
0
 /// <summary>
 /// Dodaje referencje do symboli startowych
 /// do tablicy listOfProductions
 /// </summary>
 /// <param name="elem"></param>
 private void addToList(Productions elem)
 {
     if (LastAdded == ListSize - 1)
     {
         Console.WriteLine("Lista pełna.");
     }
     else
     {
         LastAdded++;
         listOfProductions[LastAdded] = elem;
     }
 }
示例#2
0
 /// <summary>
 /// Metoda dopowiadająca produkcji: S -> SS
 /// </summary>
 public void Prod_double()
 {
     if (listOfProductions[Indexer].Value == "S")
     {
         Productions nowy = new Productions();
         if (LastAdded != ListSize - 1)
         {
             listOfProductions[Indexer].addPrev(nowy);
             addToList(nowy);
         }
     }
 }
示例#3
0
        /// <summary>
        /// Metoda odpowiadająca produkcji: S -> aSb
        /// </summary>
        public void Prod_ab()
        {
            if (listOfProductions[Indexer].Value == "S")
            {
                Productions n1 = new Productions();
                n1.Value = "a";
                Productions n2 = new Productions();
                n2.Value = "b";

                listOfProductions[Indexer].addPrev(n1);
                listOfProductions[Indexer].addNext(n2);
            }
        }
示例#4
0
 /// <summary>
 /// Dodaje element po symbolu startowym
 /// </summary>
 /// <param name="to_add"></param>
 public void addNext(Productions to_add)
 {
     if (this.next == null)
     {
         to_add.prev = this;
         this.next   = to_add;
     }
     else
     {
         to_add.next    = this.next;
         to_add.prev    = this;
         this.next.prev = to_add;
         this.next      = to_add;
     }
 }
示例#5
0
 /// <summary>
 /// Dodaje element przed symbolem startowym
 /// </summary>
 /// <param name="to_add"></param>
 public void addPrev(Productions to_add)
 {
     if (this.prev == null)
     {
         to_add.next = this;
         this.prev   = to_add;
     }
     else
     {
         to_add.next    = this;
         to_add.prev    = this.prev;
         this.prev.next = to_add;
         this.prev      = to_add;
     }
 }
示例#6
0
        /// <summary>
        /// Metoda do testów,
        /// wyświetla oprócz wszystkich elementów utworzonego słowa
        /// także elementy ze słowem pustym (tutaj wyświetlanym jako '*')
        /// </summary>
        public void DevWypisz()
        {
            Productions temp = new Productions();

            temp = this;
            while (temp.prev != null)
            {
                temp = temp.prev;
            }
            while (temp != null)
            {
                Console.Write(temp.Value);
                temp = temp.next;
            }
            Console.WriteLine("");
            Console.WriteLine("-------------------");
        }
示例#7
0
 /// <summary>
 /// Konstruktor elementu produkcji, tworzy nowy obiekt startowy
 /// </summary>
 public Productions()
 {
     value = "S";
     prev  = null;
     next  = null;
 }