
- •4. Таблица идентификаторов.
- •5. Кэш адресация
- •6. Формальные языки и грамматики.
- •7. Понятие языка
- •8. Запись грамматики в форме Бэкуса-Наура.
- •9. Запись правил грамматики с использованием метасимволов.
- •10. Запись правил гр-ки в граф-м виде
- •11. Классификация грамматик
- •12. Классификация языков.
- •Цепочки вывода
- •Дерево вывода
- •Правила задающие неоднозначность грамматик
- •Распознаватель
- •Задача разбора
- •Этапы семантического анализа
Цепочки вывода
Вывод – это процесс порождения предложений языка на основе правил грамматики.
Цепочка β наз-ся непосредственно выводимой из цепочки α, грамматики G(VT,VN,P,S), где V=VT U VN, γ € V*
β=δ1 γ δ2
α= δ1 ω δ2
δ1,δ2€ V*, ω € V+
если во мн-ве пр-я грамматики существует правило ω→γР
ω→ γ € P, α => β (непосредственная выводимость)
Цепочка β выводима из α: α =>* β, если выполняется одно из 2-х условий: 1. α =>β; 2. существует α =>* γ γ => β
Цепочка вывода – это последовательность непосредственно выводимых цепочек. Каждый переход от одной непосредственно выводимой цепочки к следующей называется шагом вывода.
Если известно количество шагов цепочки β из α, то α =>3 β (за 3 шага).
Вывод называется законченным, если на основе цепочки β нельзя сделать больше ни одного шага вывода (либо сод-т только терминальные символы)
Цепочка β получ-ая в рез-те законченного вывода наз. законченной цепочкой вывода.
Цепочка α наз. сентенциальной формой грамматики, если она выводима из целевого символа грамматики.
Вывод наз. левосторонним, если на каждом шаге вывода правило грамматики применяется к крайнему левому нетерминальному символу. Вывод называется правосторонним, если правило грамматики применяется к крайнему правому нетерминальному символу.
Для КС-грамматик и регулярных грамматик всегда можно построить левосторонний и правосторонний выводы.
Дерево вывода
Деревом вывода – граф, которое соответствует некоторой цепочке вывода и удовлетворяет следующим условиям:
- каждая вершина дерева обозначается символом грамматики;
- корнем дерева всегда является целевой символ грамматики;
- листьями дерева всегда являются терминальные символы грамматики;
- если некоторый узел обозначен нетерминальным символом A, а связанные с ним узлы – символами b1,b2,…,bn, то в грамматике G существует правило A-> b1,b2,…,bn.
Дерево вывода в указанном виде всегда можно построить только для КС-грамматик и регулярных грамматик.
Дерево вывода можно построить двумя способами:
1. сверху вниз
Построение начинается с целевого символа грамматики, затем в грамматике берется необходимое правило и на первом шаге вывода корневой символ раскрывается на несколько символов первого уровня.На втором и следующих шагах среди всех концевых вершин выбирается крайняя (крайняя левая – для левостороннего и крайняя правая – для правостороннего) вершина, обозначенная нетерминальным символом, для этой вершины выбирается нужное правило грамматики, и она раскрывается на несколько вершин следующего уровня. Построение заканчивается, когда все концевые вершины обозначены терминальными символами.
2. Снизу вверх
Построение происходит наоборот, т.е. начинается с листьев дерева.
Правила задающие неоднозначность грамматик
Грамматика называется однозначной, если для нее можно построить единственный левосторонний или правосторонний вывод.
Однозначность – это свойство грамматики, а не языка.
Для KС языков сущ-т правила определения однозначности:
1) A -> AA | α
2) A -> A α A | β
3) A -> α A | A β | γ
4) A -> α A | α A β A | γ
Здесь А € VN α, β, γ € (VNUVT)
Если в заданной грамматике встречается хотя бы одно правило подобного вида, то доказано, что такая грамматика точно будет неоднозначной. Однако, если подобных правил во всем мн-ве правил грамматики нет, то это не означает, что грамматика является однозначной. Такая грамматика может быть однозначной, а может и не быть. Т.е. отсутствие правил указанного вида (всех вариантов) – это необходимое, но не достаточное условие однозначности грамматики.