Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Презентации лекций по ТОИ / 6-Формальные языки и основы трансляции.pps
Скачиваний:
51
Добавлен:
02.06.2015
Размер:
615.94 Кб
Скачать

Определение языка, порождаемого грамматикой

Цепочки σ, выводимые из начального символа S грамматики G S =>* σ

называются сентенциальными формами грамматики.

Если сентенциальная форма состоит только из терминальных символов, то она называется сентенцией.

Множество всех сентенций грамматики G образует язык, порождаемый грамматикой G, и обозначается L(G).

Две различные грамматики G1 и G2, т.е. грамматики с различным

набором правил и различными множествами нетерминальных символов могут порождать один и тот же язык: L(G1) = L(G2).

Грамматики, порождающие один и тот же язык, называются

11 эквивалентными.

Определение языка, порождаемого грамматикой: примеры

Например, грамматики

G1 = {A, N1, P1, S1} и G2 = {A, N2, P2, S2},

где

A = {0, 1},

N1 = {S1, F, B}, P1 = {S1 ::= FB | F1S1, F ::= 01, B ::= 1},

N2 = {S2, C, D}, P2 = {S2 ::= 01C, C ::= D1, D ::= | 101D}

порождают разными способами одно и то же множество сентенций вида

011n,

т.е. строк, состоящих из повторяющихся (сколько угодно раз) 12 комбинаций 011 (например: 011, 011011, 011011011 и т.д.).

Пример: грамматика выражений

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

Любое выражение может быть записано в виде строки символов в алфавите

{a, b, c, .., z, 0, 1, .., 9, + , –, *, /, (, )}.

Знак аддитивной операции – это знаки операций типа сложения (+ или –). Знак мультипликативной операции – это операции типа

умножения (* или / ). Какие-либо другие операции, в том числе унарный минус и унарный плюс не используются.

Для простоты будем предполагать, что переменная задается

одной буквой, а число – одной или несколькими цифрами (т.е.

13 является целым без знака).

Пример: грамматика выражений

Грамматика выражений включает следующие правила (нетерминальные символы выделены угловыми скобками):

<Expression> ::= <Addend >{ +<Addend> | – <Addend> } <Addend> ::= <Factor> { *<Factor> | /<Factor> } <Factor> ::= <Letter> | <Number> | ( <Expression >)

<Letter > ::= a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z

<Number> ::= <Digit > {<Digit >}

<Digit > ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

14

Пример: грамматика выражений

Примеры выражений, записанных на основе этих правил: a+b

(cd) (cd)*(c+d) m*n+4 s–(75/k+r)/a 1 0011999

f

(((1)))

15 0–9

Пример: грамматика выражений

Эти правила определяют Выражение через Слагаемое,

Слагаемое через Множитель, Множитель через Переменную,

Число и Выражение, таким образом, Выражение определяется

 

(транзитивно) через Выражение.

 

Альтернативное определение Множителя как Переменной или

 

Числа – выход из рекурсии. Эти понятия здесь являются

 

первичными.

 

Ситуация подобна рекурсивным процедурам.

 

Имеется косвенная рекурсия в определении понятия Выражения

 

(равно как и понятий Слагаемого и Множителя) и альтернативная

 

нерекурсивная ветвь, позволяющая остановиться и сформировать

 

алгебраическое выражение конечной длины.

16

Каждому правилу можно поставить в соответствие процедуру

синтаксического разбора.

Пример: грамматика выражений

 

 

 

 

 

 

 

 

 

 

Число

 

 

 

 

 

 

 

 

 

 

Выражение

 

Слагаемое

Множитель

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Переменная

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

17

Пример: грамматика выражений

(cd)*(1+d)

 

 

 

 

 

 

 

 

 

 

Число

 

 

 

 

 

 

 

 

 

 

Выражение

 

Слагаемое

Множитель

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Переменная

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

18

Пример: грамматика выражений

(cd)*(1+d)

 

 

 

 

 

 

 

 

 

 

Число

 

 

 

 

 

 

 

 

 

 

Выражение

 

Слагаемое

Множитель

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Переменная

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

Пример: грамматика выражений

(cd)

 

 

 

 

 

 

 

 

 

 

Число

 

 

 

 

 

 

 

 

 

 

Выражение

 

Слагаемое

Множитель

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Переменная

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20

Соседние файлы в папке Презентации лекций по ТОИ