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


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



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









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

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

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

Популярное:
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...



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

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

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

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

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

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



(0.005 сек.)