Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория языков программирования и методы трансляции..pdf
Скачиваний:
28
Добавлен:
05.02.2023
Размер:
3.41 Mб
Скачать

174

0

Входной символ – « », T(S6, ) = R1, приведение по правилу 1 (VARS real

IDLIST ;). Снимаем со стеков по три элемента:

real a, b, c;

 

 

0

 

 

 

 

Новым состоянием будет T(S0, VARS) = S1:

 

 

 

 

 

 

VARS

 

1

 

 

 

0

 

 

 

 

Входной символ – « », T(S1, ) = HALT, разбор завершен успешно.

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

5.4 СРАВНЕНИЕ LL- И LR-МЕТОДОВ РАЗБОРА

Как LL-, так и LR-методы разбора имеют много достоинств. Оба мето-

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

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

ских трудностей [2].

Два этих метода можно сравнивать в отношении размеров таблиц раз-

бора и времени разбора. Использование по одному слову на элемент в LL-

таблице разбора позволяет свести размер типичной таблицы к минимуму, в

то время как LR-разбор этой возможности не предоставляет.

Коэн и Рот сравнивали максимальное и среднее время разбора с помо-

щью LL- и LR-анализаторов. Из данных для машин серии DEC результаты разбора LL-методом оказались быстрее на 50%.

Оба метода разбора позволяют включать в синтаксис действия для вы-

полнения некоторых аспектов компиляции. Для LR-анализаторов такие дей-

ствия обычно связаны с приведениями.

175

Разные разработчики компиляторов отдают предпочтение разным ме-

тодам (т.е. разбору снизу вверх или сверху вниз), что постоянно служит предметом дискуссий. На практике выбор метода в основном зависит от наличия хорошего генератора синтаксических анализаторов любого типа.

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Контрольные вопросы по главе 5

·· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

1.Технология разбора снизу вверх.

2.Построение LR-таблицы разбора.

3.Метод определения количества состояний грамматики.

4.Разрешение конфликта сдвиг/приведение.

5.Сравнение LL- и LR-методов разбора.