Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЯПиМТ.docx
Скачиваний:
8
Добавлен:
01.03.2025
Размер:
687 Кб
Скачать
☆

Алфавит, цепочка, грамматика

Формальная грамматика(грамматика) – способ описания формального языка, т.е. выделения некоторого подмножества из множества всех слов некоторого конечного алфавита.

Конечное множество символов А называется алфавитом.

Цепочкой называется любая конечная последовательность символов данного алфавита. (α).

Множество всех цепочек включает пустую цепочку .

- все цепочки из алфавита А.

- усеченная итерация мн.А (не содержит )

- полная итерация мн-ва А

Длина цепочки – количество символов в ней.

если α и β - цепочки, то цепочка αβ называется конкатенацией

(или сцеплением) цепочек α и β.

- n-я степень цепочки α. Это конкатенация n цепочек α.

Грамматика бознач. G(Z) и предст. собой непустое мн-во продукционных правил, где Z – нач. символ грамматики.

U ::= и – продукционное правило. В общем случае и левая и правая часть могут быть цепочками символов.

У грамматики есть словарь V символов, который образует цепочки. Словарь делится на 2 непересек. подмн-ва:

- нетерминальные символы (могут встреч. и в левой и в прав. Части продукц. правила )

- терминальные(конечные, неделимые) симв. (только справа)

Как пр. нетермин. симв. предст. в виде аббревиатур в < >.

<число>::=2

Правила с одинак. левой частью объед. в одно правило.

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

Вывод из грамматики

порождающая грамматика G - это четверка (VT, VN, P, S),

VT - алфавит терминал. символов,

VN - алфавит нетерминал. симв., не пересекающийся с VT

P - конечное подмножество множества

Эл-т (α, β) множества P наз. правилом вывода и записывается в виде α → β,

S - начальный символ (цель) грамматики, S Є VN.

цепочка β Є (1) непосредственно выводима из

цепочки α Є (2) в грамматике G = (VT, VN, P, S) (обозначим α → β), если α = ξ1 γ ξ 2 , β = ξ 1 δ ξ 2 , где

ξ1, ξ2, δ Є (1), а γ Є (2). и правило вывода γ → δ содерж. в P.

цепочка β Є (1) выводима из цепочки

α Є (2) в грамматике G = (VT, VN, P, S) (обозначим α Þ β) если существуют цепочки γ 0 , γ1, ... , γn

(n>=0), такие, что α = γ0→ γ1→ ... → γn = β

Посл - ть γ0, γ1, ... , γn называется выводом длины n.

X=>+Y – из цепоч.X выводима цепоч.Y

X=>*Y – выводима любая цеп. Y, включая начальную цеп.X

Любая цепочка, порожденная из нач. символа грамматики G, называется сентенциальной формой.

Языком, порождаемым грамматикой, называется множество всех цепочек Є VT, выводимых из S с помощью P или другими словами это множество терминальных сентенциальных форм.

С.Ф., состоящая только из терминал. симв. – это предложение.

Разбор (синт деревья)

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

Все виды разбора делятся на 2 класса:

1. Разбор снизу вверх (основан на редукции исходной цепочки к начальному символу грамматики)

2. Разбор сверху вниз (основан на построении вывода из начального символа грамматики искомой цепочки)

При нисходящем разборе дерево вывода формируется от корня к листьям; на каждом шаге для вершины, помеченной нетерминальным символом, пытаются найти такое правило вывода, чтобы имеющиеся в нем терминальные символы “проектировались” на символы исходной цепочки.

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

В теории синтаксич. анализа используется аппарат теории графов – деревья. Синтаксическим деревом называют конструкцию, включающую ряд понятий:

узлы дерева соот-ют терм. и нетерм. символам; узел дерева, соот-щий нач. симв. – Корень; узел, соот-щий терм. симв. наз. Листом и не имеет исходящих ветвей; Куст узла – множество др. узлов, подчин-х данному узлу. Концевые узлы (листья) кустов не имеют.

<число>

<чс> <цифра>

<цифра> 1

2

Одно и то же дерево может соответствовать разным выводам.

Каждому дереву может соответствовать неск. выводов.

Вывод 1:

<число> => <чс><цифра> => <цифра><цифра> => <цифра>1 =>21

Вывод 2:

<чс>1 => <цифра>1 => 21

Чтобы по дереву восстановить вывод, необходимо последовательное отсечение кустов снизу этого дерева.