Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
учебные пособия / ТЯПиМТ / новая курсовая работа.doc
Скачиваний:
63
Добавлен:
02.04.2015
Размер:
501.25 Кб
Скачать

Восходящий разбор с использованием грамматики простого предшествования

Управляющая таблица автоматного распознавателя, построенного по грамматике простого предшествования, представляет собой квадратную матрицу отношений простого предшествования для всех терминальных и нетерминальных символов грамматики. Отношения предшествования определяются для пар символов грамматики, которые могут оказаться соседними в какой-либо сентенциальной форме. Конкретные значения отношений ( < , > , =) указывают на возможное положение двух соседних символов относительно основы. Основой называется правая часть правила, которая в текущей сентенциальной форме подлежит замене левой частью правила на очередном шаге восходящего разбора. Другими словами, основа – это такая подстрока текущей сентенциальной формы, по отношению к которой на очередном шаге алгоритма типа «сдвиг-приведение» следует выполнить операцию «приведение».

Отношение <предполагает, что первый из пары соседних символов находится непосредственно слева от основы, а второй принадлежит ей и является ее первым символом. Отношение>предполагает, что первый из пары соседних символов принадлежит основе и является ее последним символом, а второй находится непосредственно справа от основы. Отношение=предполагает, что оба соседних символа находятся внутри основы. Таким образом, если рассматривать символы отношения предшествования в качестве команд управляющей таблицы автоматного распознавателя, реализующего алгоритм типа «сдвиг-приведение», символы<и=должны считаться обозначением команды «сдвиг», а символ>- команды «приведение». Клетки таблицы с такими координатами-символами, для которых отношение предшествования не определено, должны считаться содержащими команду «ошибка», поскольку неопределенность отношения предшествования для пары символов грамматики означает, что такая пара символов не может появиться ни в какой сентенциальной форме.

Во фрагменте грамматики с правилами i) – iii)отношения простого предшествования не для всех пар символов оказываются единственными. Преобразуем грамматику к виду:

  1. <описания>::=вещественное<А>

  2. <список имен>::=<список имен>,идентификатор

  3. <список имен>::=идентификатор

  4. <А>::=<список имен>

Для символов грамматики с правилами i) – iv)имеют место отношения простого предшествования, зафиксированные в матрице:

<описания>

<список имен>

<А>

вещественное

,

идентификатор

маркер правого конца

<описания>

>

<список имен>

=

>

<А>

>

вещественное

<

=

<

,

=

идентификатор

>

>

маркер левого конца

<

<

Выполним еще раз разбор строки вещественное а,втеперь уже с учетом отношений предшествования. Возможность использования матрицы отношений предшествования в качестве управляющей таблицы в автоматном распознавателе со структурой, изображенной на рис. 3, можно сказать, обусловлена следующим утверждением [5].

Единственной основой любой сентенциальной формы грамматики простого предшествования является такая самая левая подстрока si … sjэтой формы, для символов которой определены отношения простого предшествования:

si-1<si=si+1=…=sj-1 =sj>sj+1.

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

$ < вещественное < а > ,в$→ приведение по правилуiii

$ < вещественное < <список имен> = , = в > $→ приведение по правилуii

$ < вещественное < <список имен> > $→ приведение по правилу iv

$ < вещественное = <А> > $→ приведение по правилу i

$ < <описания> > $→ успешное завершение разбора.

В заключение раздела прокомментируем процесс заполнения матрицы отношений простого предшествования. Эти отношения определяются в результате анализа правил грамматики.

Если символы AиBстоят рядом в правой части какого-либо правила грамматики, то для них определено отношение простого предшествования = :A=B. Например: <список имен> = ,.

Если символы AиWстоят рядом в правой части какого-либо правила грамматики и символWявляется нетерминальным, тоA<Bдля всех символовB, с которых могут начинаться строки, выводимые изW. Например:

вещественное < <список имен> ивещественное < идентификатор, поскольку есть правило с правой частьювещественное<А>, а строки, выводимые из <А>, могут начинаться с символа <список имен> и символаидентификатор.

Если символы WиBстоят рядом в правой части какого-либо правила грамматики и символWявляется нетерминальным, а символB– терминальным, тоA>Bдля всех символовA, на которые могут заканчиваться строки, выводимые изW. Например:идентификатор > ,,поскольку есть правило с фрагментом правой части

<список имен> ,и все строки, выводимые из нетерминала <список имен>, заканчиваются символомидентификатор.

Соседние файлы в папке ТЯПиМТ