- •3. Опорный конспект лекций
- •3.1. Введение, определение языка
- •3.1.1. Элементы теории языка и их грамматика. Символы, цепочки и операции над ними
- •Формальное определение языка
- •3.1.3. Отношения и операции над ними
- •3.1.4. Требования, предъявляемые к грамматикам
- •Способы представления синтаксиса языка. Задание бесконечного текста конечными средствами. Проблема разбора. Классификация языков
- •3.2. Сканеры (лексические анализаторы)
- •3.2.1. Автоматные грамматики и диаграмма состояний
- •Регулярные выражения и конечные автоматы
- •Недетерминированные конечные автоматы
- •3.3. Грамматики простого предшествования
- •3.3.1. Простые предшествования.
- •Отношения предшествования и их вычисление
- •Операторное предшествование
- •Вычисление отношений операторного предшествования. Алгоритм разбора на основе операторного предшествования
- •3.3.5. Предшествование более высокого порядка
- •3.3.6. Способ представления грамматики в оп
- •3.3.7. Предшествование более высокого порядка
- •3.3.8. Ограниченный контекст
- •Определение 1:1 ограниченного контекстного распознавателя
- •Алгоритм 1:1 ограниченного контекстного преобразователя
- •Примеры разбора цепочек по алгоритму 1:1 ограниченного контекстного преобразователя
- •Определение m: n - ограниченного контекста
- •3.4. Автоматы с магазинной памятью, [ мп-автомат ]
- •Операции над магазином:
- •Операции над состоянием:
- •Операции над входной цепочкой:
- •Автомат задаётся:
- •Варианты мп-автоматов (доопределение)
- •Эквивалентность мп-автоматов и кс-грамматик
- •Мп, работающий снизу вверх
- •Формальное определение для левой свертки
- •Восходящий распознаватель
- •Детерминированный мп-автомат
- •Проблема зацикливания
- •3.4.1. Общие методы синтаксического анализа.
- •Вопросы для самопроверки
- •Нисходящий разбор
- •Нисходящий преобразователь (распознаватель)
- •Моделирование мп –преобразователя. Нисходящий анализ с возвратом Синтез процедуры
- •Нисходящий разбор в терминах грамматик
- •Алгоритм нисходящего разбора
- •Пример:
- •Алгоритм восходящего разбора
- •3.4.2. Польская запись, тетрады, триады, деревья.
- •Перевод индексной записи в тетрады
- •3.5. Теория перевода
- •3.5.1. Формализмы определения перевода
- •3.5.2. Синтаксически управляемый перевод
- •3.5.3. Конечные преобразователи. (Простейший транслятор)
- •3.5.4. Преобразователи с магазинной памятью
- •Лабораторная работа №7 Поиск основы в грамматиках простого предшествования
- •5. Контроль знаний
- •Глоссарий
Операторное предшествование
Предшествование операторов
При использовании грамматик простого предшествования отношения определялись между всеми символами как операндами, так и операторами. Техника предшествования операторов формализует понятие предшествования только между терминальными символами (операторами).
Грамматика G называется операторной грамматикой, если ни одно из её правил не имеют вида
U: = …VW… , где V,WÎVN, то есть рядом не могут стоять два нетерминала. Никакая сентенциальная форма не содержит двух соседних нетерминальных символов:
R ≗ S, если U: = …RS…|…RVS…, где R,SÎVT, VÎVN.
R∘>S, если U: = …WS… и W=>+…R|…RV
R<∘S, если U: = …RW… и W=>+S…|VS…
Построим отношение для грамматики: E: = E+T|T; T: = T*F|F; F: = (E)|i .
Вычисление отношений операторного предшествования. Алгоритм разбора на основе операторного предшествования
Алгоритм разбора на основе простого предшествования
Отношение Q ПЕТ R(R – первый терм из Q) имеет место тогда и только тогда, когда Q: = R…|VR…, а отношение Q ПОСТ R(R – последний терм из Q) имеет место тогда и только тогда, когда Q: = …R|…RV…, где V-нетерминальный символ.
U
… W S
∘>=(ПОСТ)Т ´ (ПОС) ´ (≐)
…Q
…R|RV
U
R W
<∘ =(≐)´(ПЕ)+´(ПЕТ)
Q…
S…|VS
Первичные фразы и их обнаружение
Для нахождения основ, состоящих из одного нетерминала, рассматриваемые отношения неприемлемы, так как по условию для нетерминалов их просто не существует. Основу с помощью операторного предшествования не отыскать. Введём подцепочку и назовём её первичной фразой.
Первичной фразой сентенциальной формы считается такая фраза, в которую входит, по крайней мере, один терминал и сама она не содержит других первичных фраз.
E
E + T
|
E + T F
| | |
T T*F i
T+T*F+i – сентенциальная форма.
Введём первичную фразу. T+T+F – некоторая подцепочка, в ней основа Т, но она не будет первичной фразой, так как не содержит терминала.
T*F – будет первичной фразой, так как содержит терминал и нет других первичных фраз.
i – будет первичной фразой, так как содержит терминал и нет других первичных фраз.
Запишем сентенциальную форму в общем виде: #N1T1N2T2N3T3…NnTn#. (N- нетерминал, Т- терминал).
Сентенциальная форма, таким образом, состоит из n- терминалов, причём между каждым соседним символом находится не более одного нетерминала.
Ti-1<∘ NiTi…NjTjNj+1∘>Tj+1 – первичная фраза.
Любой символ всегда находится в таком отношении: #<∘Tj∘># с дополнительными.
Сентенциальная форма |
Отношения |
Первичная фраза |
К чему приводится |
T+T*F+i |
#<∘+<∘* ∘>+ |
T*F |
Т |
Нетерминалы, стоящие слева и справа, принадлежат первичной фразе.
Следующий шаг: T+T+i #<∘+∘>+ T+T (нет такого правила) E.
Поэтому в процедуру разбора надо ввести некоторые семантические состояния, то есть анализ правила на наличие одного терминального символа из правила, то есть проведём замену Т на Е, такое правило есть:
-
# E+i #
# <∘+<∘i∘> #
i
F;
# E+F #
#<∘+∘>#
E+F
E.
Структура цепочки правильная и разбор окончен, если между # стоит нетерминал.