Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
13. ТЯП-госы.doc
Скачиваний:
5
Добавлен:
26.08.2019
Размер:
502.27 Кб
Скачать

Общие принципы построения лексических анализаторов

Лексический анализатор имеет дело с такими объектами, как различного рода константы и идентификаторы (к последним относятся и ключевые слова). Язык констант и идентификаторов в большинстве случаев является регулярным — то есть может быть описан с помощью регулярных грамматик. Распознавателями для регулярных языков являются конечные автоматы. Существуют правила, с помощью которых для любой регулярной грамматики может быть построен НКА, рас­познающий цепочки языка, заданного этой грамматикой. КА для каждой входной цепочки языка дает ответ на вопрос о том, принадлежит или нет цепочка языку, заданному автома­том.

В общем случае задача сканера несколько шире, чем просто проверка цепочки символов лексемы на соответствие ее входному языку. Кроме этого, сканер должен выполнить следующие действия:

  • четко определить границы лексемы, которые в исходном тексте явно не заданы;

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

Конечные автоматы

Распознавателем языка называется программа, кот получает на входе строку x и отвечает «да», если x – предложение языка, или в противном случае «нет». Регулярное выражение компилируется в распознаватель путем построения обобщенной диаграммы переходов, называемой конечным автоматом. Такой автомат может быть детерминированным или недетерминированным (недетерминированный автомат может иметь более одного перехода из состояния при одном и том же входном символе).

Недетерминированный конечный автомат A=(Q, V, δ, q0, F) представляет собой математическую модель, состоящую из

  • множества состояний Q;

  • множества входных символов V (символов входного алфавита);

  • функции переходов δ, которая отображает пары символ-состояние на множество состояний;

  • состояния q0, известного как стартовое (начальное);

  • множества состояний F, известных как допускающие (конечные);

НКА может использоваться в виде помеченного орграфа, так называемого графа переходов, узлы которого представляют собой состояния, а помеченные дуги составляют функцию переходов. Некоторые переходы могут быть помечены специальным символом , как обычным входным символом (-переходы).

Функция переходов НКА может быть реализована различными способами. Простейший из них — таблица переходов, в которой строки представляют состояния, а столбцы — входные символы. Запись в строке i для символа а является множест­вом состояний, которые могут быть достигнуты переходом из состояния i при входном символе а.

Детерминированный конечный автомат - спец. случай НКА, в котором

  • отсутствуют состояния, имеющие λ-переходы;

  • для каждого состояния s и входного символа а существует не более одной дуги, выходящей из s и помеченной как а.

ДКА имеет для любого входного символа не более одного перехода из каждого состояния. Если для представления функции переходов ДКА используется таблица, то каждая запись в ней представляет собой единственное состояние. Следовательно, очень просто проверить, допускает ли данный ДКА некоторую строку, поскольку имеется не более одного пути от стартового состояния, помеченный этой строкой.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]