Adv→ quietly • , наречие
T → a • ,
T → an • , артикль
T → the • , }
R – множество продукций типа а→b (с.м.).
Как нетрудно проверить, язык, порождаемый этой грамматикой, содержит наряду с другими такие слова:
John• plays • ball,
John• sleeps • quietly, (5.20)
colorless • green • ideas• sleep • furiously• .
Такое описание английского языка не учитывает тонкостей, связанных с изменением слов (склонением, спряжением), не гарантирует содержательно осмысленных конструкций. Здесь формальная грамматика лишь частично воспроизводит настоящую грамматику естественного языка. Поэтому язык и называется формальным.
Словарные символы из β\γ: NP, VP, AP, …, Adv называются нетерминальными.
Пример 2
β\γ = {Z, A, T, Р},
γ = {(,), + , - , ×, /, a, b, c, d, e},
R={Z→A,
A→T, T →P, P →b,
A→+T, T →T×P, P→c, (5.21)
A→ -T, T →T/P, P →d,
A→A+T, P→(A), P →e}.
A→A – T, P →a,
Здесь формальный язык представляет собой язык арифметических выражений в обычной записи. Приведем вывод выражений: 1.) а; 2.) a+b; 3.) a+b×c.
1.) Z→A→T→P→a. (5.22)
2.) Z→A→ A+T→A+P→A+b →T+b→P+b→a+b.
3.) Z→A→ A+T→A+P→A+(A)→ A +(T)→A+ (T×P) → A+ (T×c)→ →A+ (P×c) →A+ (b×c) →T+ (b×c)→ P+ (b×c)→ a+b×c.
Описание автоматов и формальных языков
Формальные языки служат прежде всего для формального задания языка как запаса слов и его синтаксической структуры.
Если ограничится грамматиками Хомского типа 3, то можно вместо формальных языков рассматривать и автоматы. Представим некоторые возможности описания формальных языков.
5.7.1. Словесное описание
Язык состоит из всех двоичных слов, в которых непосредственно друг за другом следуют три L (LLL).
Пример 0LLL, LLL0, 0LLL00, и т.д.
5.7.2. Описание при помощи грамматики Хомского
грамматика Хомского типа 3 со словарным запасом:
Г=( β, γ, R, z),
β ={ D, E, F, Z, 0, L}, γ ={0,L},
R ={D→0, E→L,
D→D0, E→DL,
D→E0, E→EL,
D→D0, E→DL,
D→F0, Z→FL, (с.м.)
Z→Z0, Z→ZL}
5.7.3. Описание при помощи таблицы переходов автоматов
Автомат для примера, приведенный в §5.7.2. будет иметь состояния: s0, sD, sE, sF, sz соответствующие синтаксическим переменным: ε, D, E, F, Z.
ε – пустое слово, не содержащее ни одного символа, которое есть левая или правая единица. Необходимо для выполнения равенства εy=y и yε=y.
s0 - начальное состояние автомата.
sz - заключительное состояние автомата.
Таблица переходов
5.7.4. Описание при помощи диаграммы переходов автомата
Дано по таблице §5.7.3.
5.7.5. Описание при помощи дерева разбора
Граф построенный таким образом, что в каждую вершину ведет ровно одно ребро, называют деревом. Вершина, к которой не ведет ни одного ребра и с которой начинается вывод, называется корнем дерева. Дерево не содержит циклов.
Деревом разбора для вывода, реализующего соотношение
X=>b, Xβ, bβ*\{ε},
Называется всякое лежащее в плоскости дерево без самопересечений с корнем Х и символами из β в качестве вершин, устроенное следующим образом: для всякой продукции
(с.м.) Y→B1B2…Bk, k ≥1,
фигурирующей в выводе, имеется ровно k исходящих из вершины Y дуг, упорядоченных в направлении против часовой стрелки и направленных в вершины B1, B2, …, Bk. В данном случае принимается Y→b (с.м.) и b= B1, B2, …, Bk.
Тогда вершины, из которых не исходит ни одной дуги, если их прочитать в направлении против часовой стрелки, дадут слово «b».
Дерево разбора к примеру (5.20)
Дерево разбора для a×(b+c) в грамматике (5.21)
5.7.6. Описание при помощи программы
Можно запрограммировать вычислительную машину так, чтобы она допускала конкретный язык, написав подпрограмму, которая вырабатывает значение «истина» тогда и только тогда, когда слово принадлежит языку.
Пример лог: {цел. i:=0,n; лог z;
пока “слово не исчерпано” цикл
{чит (z);
если z=0^i<n то i:=0 end прогр.
иначе i:=i+1 end если}}
Результатом вывода является i(i=0 v i ≠0).
5.7.7. Описание при помощи блок-схемы программы
Блок-схема программы имеет схожий с конечным автоматом принцип работы.