Мегаобучалка Главная | О нас | Обратная связь


Построение графов конечных автоматов для распознавания лексем



2020-03-19 256 Обсуждений (0)
Построение графов конечных автоматов для распознавания лексем 0.00 из 5.00 0 оценок




Здесь S - начальное состояние конечного автомата, F - конечное состояние, соответствующее концу разбора лексемы.

1. Граф конечного автомата для распознавания лексем «идентификатор» и «ключевое слово».

 


 

2. Граф конечного автомата для распознавания лексемы «целая константа без знака».

 

 

3. Граф конечного автомата для распознавания лексемы «строковая константа».

 

 

4. Графы конечных автоматов для распознавания лексем «однолитерный разделитель» и «двулитерный разделитель». Здесь «Знак1» - включает литеры класса «однолитерные разделители».

 



Диаграмма лексического анализатора

 

Здесь «Пробел» - класс, включающий пробелы, символы табуляции и перевода строки, «Не}» - класс, включающий все литеры кроме литеры «}».

Спецификации функций лексического анализатора

1) Процедура ReadLexem(Text) - считывает лексему из входного потока и распознает ее тип.

Вход: входной поток литер текста программы.

 

)   Процедура GetLexem (Type, Lexem) - в зависимости от типа переданной лексемы вызывает одну из процедур:

· GetId(Lexem) - для лексем «идентификатор» и «ключевое слово»;

· GetNum(Lexem) - для лексем «целая константа без знака»;

· GetSCon(Lexem) - для лексем «строковая константа»;

· GetLet(Lexem) - для лексем «однолитерный разделитель» и «двулитерный разделитель»;

Вход: лексема и ее тип.

3) Процедура GetId(Lexem) - если переданная лексема является ключевым словом, определяет ее адрес(pos) в таблице ключевых слов и вызывает процедуру WriteToken (Key, pos); в противном случае ищет запись(pos) об этой лексеме в таблице идентификаторов, если    находит, то вызывает процедуру WriteToken (Id, pos), иначе вызывает процедуру AddLexem (Id, Lexem);

Вход: лексема типа «идентификатор» или «ключевое слово».

4) Процедура GetNum(Lexem) - ищет запись(pos) о переданной лексеме в таблице констант, если находит, то вызывает процедуру WriteToken (Num, pos), иначе вызывает процедуру AddLexem (Num, Lexem);

Вход: лексема типа «целая константа без знака».

5) Процедура GetLet(Lexem) - определяет адрес(pos) лексемы в таблице разделителей и вызывает процедуру WriteToken (Let, pos);

Вход: лексема типа «однолитерный разделитель» или «двулитерный разделитель»;.

6) Процедура AddLexem (Type, Lexem) - добавляет запись(pos) о лексеме в таблицу лексем заданного класса и вызывает процедуру WriteToken (Type, pos);

Вход: лексема и ее тип.

7) Процедура WriteToken (Type, Position) - формирует токен и записывает его в выходной поток токенов.

Вход: номер лексемы в соответствующей таблице лексем.

Таблицы лексем

 

1) Таблица ключевых слов

Таблица ключевых слов
имя ключевого слова

 

Таблица идентификаторов

Таблица идентификаторов

имя Тип значение

 

Таблица целых констант

Таблица целых констант
значение

 

Таблица разделителей

Таблица разделителей
Разделитель

 

Таблица строковых констант

Таблица строковых констант
значение

 

Таблица пользовательских типов. (Заполняется на этапе синтаксического анализа)

Таблица пользовательских типов

Имя Начало Конец

 


Таблица меток (Заполняется на этапе синтаксического анализа)

Таблица меток

Имя Номер тетрады

 

Таблица строковых переменных. (Заполняется на этапе синтаксического анализа)

Таблица строковых переменных

Имя Длина Значение

 

Таблица промежуточных значений. (Заполняется на этапе синтаксического анализа)

Таблица промежуточных значений

Тип Значение



2020-03-19 256 Обсуждений (0)
Построение графов конечных автоматов для распознавания лексем 0.00 из 5.00 0 оценок









Обсуждение в статье: Построение графов конечных автоматов для распознавания лексем

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (256)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)