//Функция для занесения элемента в одну из таблиц, а так же в таблицу стандартных символов 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); } }