Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора_ТЯПиМТ.doc
Скачиваний:
15
Добавлен:
13.09.2019
Размер:
935.94 Кб
Скачать

29) Домино Де Ремера

Де Ремер предложил наглядную интерпретацию задачи разбора, представив ее как игру в своеобразное домино. Играющий располагает "костями" домино нескольких типов. Типов столько, сколько правил в грамматике. Каждое правило дает один тип пластинки.

Считается, что костяшек каждого типа имеется сколько необходимо. Левой части правила грамматики, нижняя - правой. Верхняя и нижние пластинки соединены резиновыми нитями. Пластинки можно представлять друг другу плоскими сторонами полукруга, если на них записаны одинаковые символы. Фигуры домино нельзя переворачивать и нельзя менять порядок следования символов.

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

Цель состоит в том, чтобы соединить с помощью имеющихся фигур символы терминальной цепочки и начальный нетерминал.

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

Если дерево строится свреху вниз от начального нетерминала в сторону терминальной цепочки, алгоритм относится к классу нисходящих, от цепочки в сторону корня дерева - восходящих. Можно вначале подбирать для левых символов, а можно для правых.

30. Эквивалентность(неоднозначность) и однозначность грамматик.

В информатике неоднозначной грамматикой называется формальная грамматика, которая может породить некоторую строку более чем одним способом (то есть для строки есть более одного дерева разбора). Язык называется существенно неоднозначным, если он может быть порождён только неоднозначными грамматиками.

Грамматики некоторых языков программирования неоднозначны. При разборе таких языков необходимо учитывать семантическую информацию для выбора правильного варианта. Например, на языке C следующая запись:

x * y;

может быть проинтерпретирована как либо:

  • объявление идентификатора y с типом указатель-на-x, или

  • выражение, в котором x умножается на y, а результат игнорируется.

Чтобы выбрать между этими интерпретациями, компилятор должен обратиться к своей таблице символов, чтобы узнать, было ли объявление x в качестве имени typedef в данной области видимости.

Для однозначной грамматики наоборот.

31. LL-грамматика.

32.Табличный анализатор.

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