Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СП. Краткий Теоретический Курс.doc
Скачиваний:
12
Добавлен:
26.09.2019
Размер:
99.84 Кб
Скачать
  1. Диаграмма состояний (дс) для заданной леволинейной регулярной грамматики. Построение дс

Диаграмма состояний НКА – это неупорядоченный помеченный ориентированный граф: узлы – помечены символами состояний из К, дуги соединяющие A и узел помеченный В, помечены t: F(A, t) = B.

  1. Определение недетерминированного конечного автомата

Недетерминированный конечный автомат – это пятерка (K, VT, F, H, S), где K – конечное множество состояний, VT – кон мн-во допустимых вх. символов, F – функция переходов, H – нач. состояние из K, S – мн-во заключительных состояний, подмн-во K.

  1. Алгоритм построения детерминированного конечного автомата по нка

М = (K, VT, F, H, S) – НКА; M’ = (K’, VT, F’, H’, S’) – ДКА, допускающий тот же язык, что и М.

  1. Множество состояний К’ состоит из всех подмножеств множества К. Каждое состояние из К’ будем обозначать [A1A2…An], где Ai из К

  2. Отображение F’ определим как F’([A1…An], t) = [B1…Bm], где для каждого 1 <= j <= m F(Ai, t) = Bj для каких-либо 1 <= i <= n

  3. Пусть H = {H1, H2, … Hk}, тогдa H' = [H1, H2, …, Hk]

  4. Пусть S = {S1, S2, …, Sp}, тогда S’ – все состояния из K’, имеющие вид […Si…], Si из S для какого-либо 1 <= i <= p.

  1. Задачи лексического анализа

  • Выделить в исходном тексте цепочку символов, представляющую лексему

  • Удалить пробельные символы и комментарии

  • Зафиксировать в специальных таблицах для хранения разных типов лексем факт появления соответствующих лексем в анализируемом тексте

  • Преобразовать цепочку символов, представляющих лексему, в пару (тип лексемы, указатель на информацию о ней)

  1. Организация классов таблиц лексического анализатора

На этапе лексического анализа создаются следующие таблицы:

  • Таблица служебных слов языка

  • Таблица ограничителей

  • Идентификаторов анализируемой программы

  • Чисел-констант

Организация таблиц:

  • Массив записей (упорядоченных или нет)

  • Массив указателей на записи (если структуры разных типов)

  • Список

  • Бинарное дерево

  • Хеш-таблицы (чаще всего используются на практике)

  1. Метод рекурсивного спуска: назначение, семантика процедур рекурсивного спуска

Один из алгоритмов анализа входной цепочки, расходующий линейное время. Последовательность разбора эквивалентна построению дерева разбора методом «сверху вниз». Для каждого нетерминала грамматики создается своя процедура, носящая его имя, ее задача – начиная с указанного места исходной цепочки найти подцепочку, которая выводится из этого нетерминала. Если такую подцепочку считать не удается, то процедура завершает свою работу вызовом процедуры обработки ошибки, которая выдает сообщение о том, что цепочка не принадлежит языку, и останавливает разбор. Если цепочку удалось найти, то работа процедуры считается нормально завершенной и осуществляет возврат в точку вызова. Тело каждой такой процедуры пишется непосредственно по правилам вывода соответствующего нетерминала: для правой части каждого правила осуществляется поиск подцепочки, выводимой из этой правой части. При этом терминалы распознаются самой процедурой, а нетерминалы соответствуют вызовам процедур, носящих их имена.