Example #1
0
        //Функция для занесения элемента в одну из таблиц, а так же в таблицу стандартных символов
        private void Fill(Lexem a, Table tbl, Table final)
        {
            //Переменная состояния
            Byte B = 0;
            //Временный стандартный символ
            StandartSymbol le = new StandartSymbol();

            //Извлекаем значения из таблицы лексем
            Lexem[] temp = new Lexem[tbl.GetCountLexem()];
            temp = tbl.GetTableString();
            //Запускаем цикл
            for (int i = 0; i < temp.Length; i++)
            {
                //Если лексема совпадает с табличной
                if (a.Get() == temp[i].Get())
                {
                    //меняем состояние
                    B = 1;
                    //Смотрим на тип лексемы
                    if (a.GetTypeString() == "Identifier")
                    {
                        le.TableNumber = 4;
                    }
                    if (a.GetTypeString() == "Literal")
                    {
                        le.TableNumber = 3;
                    }
                    //Запоминаем номер лексемы в таблице
                    le.ItemNumber = i;
                }
            }
            //Если состояние не было изменено
            //Добавляем лексему к таблице
            //И вызываем функцию еще раз
            if (B == 0)
            {
                tbl.SetTableString(a);
                Fill(a, tbl, final);
            }
            //Если состояние все же изменилось
            //Добавляем лексему к финальной таблице
            else
            {
                le.Set(a.Get());
                final.SetTableString(le);
            }
        }