Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 5.doc
Скачиваний:
3
Добавлен:
16.04.2019
Размер:
3.86 Mб
Скачать

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.

    1. Описание автоматов и формальных языков

Формальные языки служат прежде всего для формального задания языка как запаса слов и его синтаксической структуры.

Если ограничится грамматиками Хомского типа 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. Описание при помощи блок-схемы программы

Блок-схема программы имеет схожий с конечным автоматом принцип работы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]