Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

шпоры

.doc
Скачиваний:
81
Добавлен:
06.02.2015
Размер:
308.73 Кб
Скачать

1.  автома́т — модель дискретного устройства, имеющего один вход, один выход и в каждый момент времени находящегося в одном состоянии из множества возможных. На вход этому устройству поступают символы одного алфавита, на выходе оно выдаёт символы другого алфавита

Где S — конечное множество состояний автомата, X, Y — конечные входной и выходной алфавиты соответственно, из которых формируются строки, считываемые и выдаваемые автоматом,  — функция переходов,  — функция выходов.

Автомат Мили— конечный автомат, выходная последовательность которого (в отличие от автомата Мура) зависит от состояния автомата и входных сигналов. Это означает, что в графе состояний каждому ребру соответствует некоторое значение (выходной символ). В вершины графа автомата Мили записываются выходящие сигналы, а дугам графа приписывают условие перехода из одного состояния в другое, а также входящие сигналы.

Автомат Мура  — конечный автомат, выходное значение сигнала в котором зависит лишь от текущего состояния данного автомата, и не зависит напрямую, в отличие от автомата Мили, от входных значений.

8. автомат с магазинной памятью — это конечный автомат, который использует стек для хранения состояний. В отличие от обычных конечных автоматов, автомат с магазинной памятью является набором[1]:

 где

-K — конечное множество состояний автомата

-- — единственно допустимое начальное состояние автомата

- — множество конечных состояний, причём допустимо F=Ø, и F=K

-Σ — допустимый входной алфавит, из которого формируются строки, считываемые автоматом

-S — алфавит памяти (магазина)

 — нулевой символ памяти.

Память работает как стек, то есть для чтения доступен последний записанный в неё элемент. То есть, по комбинации текущего состояния, входного символа и символа на вершине магазина автомат выбирает следующее состояние и, возможно, символ для записи в магазин. В случае, когда в правой части автоматного правила присутствует , в магазин ничего не добавляется, а элемент с вершины стирается. Если магазин пуст, то срабатывают правила с  в левой части.

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

13.

15) Грамматика, генерирующая некоторый формальный язык.

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

Порождающая грамматика Хомского задается как множество «правил порождения» (продукций). Каждое правило является просто парой цепочек (w', w'') и задает возможность замены левой цепочки на правую при генерации цепочек языка, задаваемого грамматикой. По этой причине, правила обычно записывают в виде w' --> w'', указывая конкретно, что на что можно заменять. Множество правил в грамматике должно быть непустым и конечным, и обычно обозначается латинской P.

Цепочки в правилах грамматики могут быть составлены из символов двух алфавитов: алфавита терминальных символов (терминалов) и алфавита нетерминальных символов (нетерминалов). Алфавит терминалов обозначают через T. Этот алфавит на самом деле совпадает с алфавитом того формального языка, который задает данная грамматика. Смысл термина «терминальный» состоит в том, что в правилах грамматики в левой части не может быть цепочек, которые составлены только из терминальных символов. Поэтому, если такая цепочка получилась в результате подстановки, то следующая процесс порождения цепочки остановится (terminate). Нетерминальные символы используются в промежуточных порождениях цепочек. Смысл нетерминала в задании алгоритма порождения цепочки может быть самый разный и обычно зависит от типа грамматики, в которой этот символ используется. Различные примеры использования нетерминальных символов будут рассмотрены ниже.

Но один нетерминальный символ всегда имеет один и тот же смысл — он обозначает все цепочки языка. Называется этот нетерминал «начальным нетерминальным символов порождающей грамматики» и обычно обозначается посредством латинского S (start или sentence). В каждой порождающей грамматике обязательно должно быть правило, к которого левая часть состоит из единственного начального нетерминала, иначе в данной грамматике нельзя будет породить даже одной цепочки.

Итак, порождающая грамматика Хомского — это четверка G = {N, T, P, S}, где

N — конечный алфавит нетерминальных символов.

T — конечный алфавит терминальных символов (совпадает с алфавитом языка, задаваемого грамматикой).

P — конечное множество правил порождения.

S — начальный нетерминал грамматики G.

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

Асинхронный ЦА - Т <> конст. и определяется моментами поступления входных сигналов, а переход автомата из одного состояния в другое осуществляется при неизменном состоянии входа. Соответственно, каким бы продолжительным не был интервал времени, в течение которого остается неизменным состояние входа, автомат будет воспринимать его как один и тот же интервал времени

Синхронный автомат - входные сигналы действуют в строго определенные моменты времени. Автомат может воспринимать новое состояние входа лишь после того, как перешел в определенное внутреннее состояние, следовательно, частота ТГ выбирается такой, чтобы до появления следующего тактового импульса автомат успел перейти в новое внутреннее состояние.

Детерминированный автомат- если поведение автомата в каждый момент времени однозначно определено.

Частично заданный-если он определен не для всех пар переходов.

11. Формальный язык — множество конечных слов (строк, цепочек) над конечным алфавитом. Формальный язык может быть определён по-разному, например:

  • Простым перечислением слов, входящих в данный язык. Этот способ, в основном, применим для определения конечных языков и языков простой структуры.

  • Словами, порождёнными некоторой формальной грамматикой (см. иерархия Хомского).

  • Словами, порождёнными регулярным выражением.

  • Словами, распознаваемыми некоторым конечным автоматом.

  • Словами, порождёнными БНФ-конструкцией.

Например, если алфавит задан как , а язык  включает в себя все слова над ним, то слово  принадлежит . Пустое слово (то есть строка нулевой длины) допускается и часто обозначается как  или .

Некоторые другие примеры формальных языков:

  • множество , где  — неотрицательное число, а  означает, что  повторяется  раз;

  • множество синтаксически корректных программ в данном языке программирования.

21.Дерево вывода

Деревом вывода грамматики G(VT,VN,P,S) называется дерево (граф), которое соот-ветствует некоторой цепочке вывода и удовлетворяет следующим условиям:

 каждая вершина дерева обозначается символом грамматики А (VT VN {ε});

 корнем дерева является вершина, обозначенная целевым символом грамматики – S;

 листьями дерева (концевыми вершинами) являются вершины, обозначенные терминальными символами грамматики или символом пустой цепочки ε;

 если некоторый узел дерева обозначен нетерминальным символом А VN, а связанные с ним узлы — символами b1,b2 … bn; n > 0, n ≥ i > 0: bi (VT VN {ε}), то в грамматике G(VT,VN,P,S) существует правило A → b1,b2 … bn Р.

Из определения видно, что по структуре правил дерево вывода в указанном виде всегда можно построить только для грамматик типов 2 и 3 (контекстно-свободных и регулярных). Для грамматик других типов дерево вывода в таком виде можно построить не всегда (либо же оно будет иметь несколько иной вид).

Вопрос29

3.2.3 Устранение -правил грамматики

Алгоритм 3.4. Устранение -правил.

Вход: КС-грамматика .

Выход: Эквивалентная КС-грамматика без -правил для всех нетерминальных символов, кроме начального, который в этом случае не должен встречаться в правых частях правил грамматики.

Шаг 1. В исходной грамматике G найти -порождающие нетерминальные символы , такие что .

    1. Положить .

    2. Вычислить .

    3. Если , то положить i:=i+1 и перейти к пункту 1.2, иначе считать .

Шаг 2. Из множества P правил исходной грамматики G перенести во множество P’ все правила, за исключением -правил, т.е. для всех

Шаг 3. Пополнить множество P’ правилами, которые получаются из каждого правила этого множества путем исключения всевозможных комбинаций -порождающих нетерминалов в правой части. Полученные при этом -правила во множество P’ не включать.

Шаг 4. Если , то , где ; иначе

Конец алгоритма.

Пример 3.7. Дана грамматика с правилами P: . Преобразуем ее в эквивалентную грамматику по алгоритму 3.4.

Шаг 1. N0 = {A, B}; N1 = {S, A, B}; N2 = {S, A, B}.

Т.к. N1 = N2, то искомое множество построено и N = {S, A, B}.

Шаг 2, 3. МножествоP’ 1) ; 2) ;

3)

Шаг 4. Т.к. , то введем новый нетерминал С и пополним множество P’правилом вида . Результирующая грамматика будет иметь вид: с правилами:

P’: .

23Вывод в порождающих грамматиках цепочки вывода

Различают порождающие и распознающие (или аналитические) грамматики — первые задают правила, с помощью которых можно построить любое слово языка, а вторые позволяют по данному слову определить, входит оно в язык или нет. Задается 4 компонентами: 1)множеством терминальных символов. 2)Мн-вом нетерминальных символов. 3)Начальным символов из набора нетерминалов. 4)мн-вом правил порождения(вывода)

a->b, где a-это непустая последовательность терминалов и нетермин. b – любая последовательность термин. И нетерминалов.

Вопрос31

Алгоритм 3.7. Устранение прямой левой рекурсии.

Вход: КС-грамматика .

Выход: Эквивалентная КС-грамматика без прямой левой рекурсии, т.е. без правил вида

Шаг 1. Вывести из грамматики все правила для рекурсивного нетерминала X:

Шаг 2. Внести новый нетерминал Y так, чтобы он описывал любой «хвост» строки, порождаемой рекурсивным нетерминалом X:

Шаг 3. Заменить в рекурсивном правиле для X правую часть, используя новый нетерминал и все нерекурсивные правила для X так, чтобы генерируемый язык не изменился:

Шаг 4. Пополнить множество нетерминалов грамматики новым нетерминалом Y. Пополнить множество правил грамматики правилами, полученными на шаге 3.

Шаг 5. Повторить действия шагов 1-4 для всех рекурсивных нетерминалов грамматики, после чего полученные множества нетерминалов и правил принять в качестве и P’

Конец алгоритма.

Пример 3.10. Дана грамматика с правилами

P: .

После устранения прямой левой рекурсии получим эквивалентную грамматику с правилами P:’

20)Грамматики типа 3

Этот класс грамматик задает алгоритм порождения цепочек присоединением некоторого количества терминальных символов с правого или левого края порождаемой цепочки. Очевидно, что правила для такого метода порождения должны иметь вид A --> alpha B или A --> B alpha, где alpha — цепочка, состоящая из терминальных символов. В этом случае, если имеется промежуточная (в процессе порождения) цепочка X1..Xn A, то замена в соответствии с правилом A --> alpha B даст цепочку X1..Xn alpha B. Например, для правил S --> aaaA, A --> abcA и A --> bbb можно задать порождение S => aaaA => aaaabcA => aaaabcbbb.

Синтаксическое отношение, которое задается грамматиками типа 3, можно обозначить термином «быть рядом». Под «рядом» здесь подразумевается как непосредственно рядом, если это задано в правой части какого-то правила порождения, так и опосредованно рядом, через нетерминальные символы в связанных между собой правилах порождения.

Для математической строгости строку терминальных символов в правилах грамматик типа 3 разбивают на несколько правил с одним терминальным символом в правой части. Например, если имеется правило A --> abcB, то его можно заменить на следующие правила, применение которых в результате порождает ту же цепочку: A --> a A1, A1 --> b A2, A2 --> cB. Иначе говоря, подстановка A => abcB эквивалентна последовательности подстановок A => a A1 => a b A2 => abcB. Такие грамматики, где нетерминальный символ стоит справа в правой части правила, называют праволинейными грамматиками, если в правой части нетерминальный символ стоит слева от терминала, то грамматику называют леволинейной.

3. Табличный способ. При этом способе автомат Мили описывается двумя таблицами: таблицей переходов и таблицей выходов. Строки этих таблиц соответствуют входным сигналам x(t), а столбцы – состояниям. На пересечении столбца ai и строки xj в таблице переходов ставится состояние as = d[ ai,xj], в которое автомат перейдет из состояния ai под воздействием сигнала xj; а в таблице выходов – соответствующий этому переходу выходной сигнал yg = l[ ai,xj]. Для задания автомата Мура требуется одна таблица, поскольку в этом автомате выходной сигнал однозначно определяется состоянием автомата.

Графический способ задания автомата (задание автомата с помощью графа).

Этот способ основан на использовании ориентированных связных графов. Вершины графов соответствуют состояниям автомата, а дуги – переходам между ними. Две вершины графа ai и as соединяются дугой, направленной от ai к as, если в автомате имеется переход из ai в as, т.е. as =  d(ai, xj). В автомате Мили дуга отмечается входным сигналом xj, вызвавшим переход, и выходным сигналом yg, который возникает при переходе. Внутри кружочка, обозначающего вершину графа, записывается состояние.

12. Некоторые операции могут быть использованы для того, чтобы порождать новые языки из данных. Предположим, что  и  являются языками, определёнными над некоторым общим алфавитом.

  • Конкатенация (сцепление)  содержит все слова, удовлетворяющие форме , где  — это слово из , а  — слово из .

  • Пересечение  содержит все слова, содержащиеся и в , и в .

  • Объединение  содержит все слова, содержащиеся или в , или в .

  • Дополнение языка  содержит все слова алфавита, которые не содержатся в .

24.Классификация языков. Соотношения классификации языков с классифик. Грамматики Хомского

Язык типа N – это язык, для которого существует грамматика типа N, но не сущ-ет грамматики N+1. Языки классифицируются в соотв. Типов грамматик, с помощью которых они связаны.

Тип0. Языки с фразовой структурой(самые сложные для распознавания) В него попадают все без исключения формальные языки. Тип1. Языки контекстно-зависимые (КЗ)-времен.распознавание языка экспоненциально зависит от длины цепочки символов. Тип2 контекстно-свободные- время на распознавание полиномиально зависит от длины цепос=чки символов. Тип3регулярные-(самый простой) время зависит линейно. Согласно классификации, предложенной Хомским, формальные грамматики классифицируются по структуре их правил. Если все без исключения правила грамматики удовлетворяют некоторой заданной структуре, то такую грамматику относят к определенному типу. Достаточно иметь в грамматике одно правило, не удовлетворяющее требованиям структуры правил, и она уже не попадает в заданный тип. По классификации Хомского выделяют четыре типа грамматик. Тип 0: грамматики с фразовой структурой. Тип 1: контекстно-зависимые (КЗ). Тип 2: контекстно-свободные (КС) грамматики. Тип 3: регулярные грамматики

Вопрос28

Алгоритм 3.3. Устранение недостижимых символов грамматики.

Вход: КС-грамматика .

Выход: КС-грамматика , такая, что и для всех существует вывод , где .

Определим множество достижимых символов Z грамматики G, т.е. множество:

Шаг 1. Положить

Шаг 2. Вычислить очередное приближение следующим образом:

Шаг 3. Если то положить i:=i+1 и перейти к шагу 2, иначе считать .

Шаг 4. Вычислить , где - это множество правил, содержащих недостижимые символы .

Конец алгоритма.

Пример 3.6. Дана грамматика с правилами P’:

Преобразуем ее в эквивалентную грамматику G’ по алгоритму 3.3:

W0 = {S};

W1 = {S, a, b};

W2 = {S, a, b}.

Т.к. W1=W2, то W={S, a, b}. Множество недостижимых символов Тогда после удаления недостижимых символов, получим грамматику с правилом P’:

22.Рекурсия в правилах грамматики

Рекурсия в правилах грамматики выражается в том, что один из нетерминальных символов определяется сам через себя. Рекурсия может быть непосредственной (явной) – тогда символ определяется сам через себя в одном правиле, либо косвенной (неявной) – тогда то же самое происходит через цепочку правил. Чтобы рекурсия не была бесконечной, для участвующего в ней нетерминального символа грамматики должны существовать также и другие правила, которые определяют его, минуя его самого, и позволяют избежать бесконечного рекурсивного определения. Правила, имеющие вид

1) T-> T * A

2) T-> A * T

Называются леворекурсивными и праворекурсивными соответственно.

25.Эквивалентные преобразования КС-грамматик

КС-грамматика называется приведенной, если она не имеет циклов, е-правил типа А->e, бесполезных символов.цели преобразования: упрощение правил и облегчение создания распознавателя языка. Все преобразования можно разбить на 2 группы:1) это преобр-ия, связанные с исключением из грамматики избыточных правил и символов. 2) преобо-ия, в рез-те которых изменяется вид и состав правил грамматики, при этом грамматика может дополняться новыми правилами, а ее словарь нетерминальных символов0новыми символами.нетерминальный символ является бесплодным(бесполезн) тогда, когда из него нельзя вывести ни одной цепочки терминальных символов

19) Контекстно-свободные грамматики

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

КС-грамматики задают два вида синтаксических отношений: отношение «быть рядом» и отношение «быть частью» или отношение иерархии. Отношение иерархии наиболее естественно для человеческого ума. Человеку свойственно типизировать вещи, т.е. рассматривать конкретные объекты своего мышления как части какого-то общего типа (класса). Каждая вещь, о которой думает человек, является экземпляром некоторого класса. Например, конкретный стул является экземпляром класса «стул» с соответствующими признаками. Человеческому уму также свойственно разделять типы на подтипы, двигаясь от более конкретных типов к более абстрактным. Скажем, стул есть подтип типа мебель, мебель есть подтип типа предмет, предмет есть подтип типа объект и т.п. Отношение «тип-подтип» и есть отношение иерархии.

КС-грамматика может быть проинтерпретирована как категориальная грамматика, т.е. грамматика типов. Символы грамматики в этом случае могут мыслиться как типы, а правила тогда задают отношение иерархии между типами. Нетерминальные символы выступают как сложные типы, а терминальный символы — как атомарные типы, у которых не может быть подтипов. Такая интерпретация КС-грамматики очень популярна и часто используется при создании трансляторов языков. Но, задавая класс КС-грамматик, Хомский имел ввиду нечто другое.

Ввиду того, что КС-грамматика является порождающей, она задает алгоритм (строго говоря, не алгоритм, но исчисление — многовариантный алгоритм) порождения цепочек языка. Порождение здесь задается не только присоединением цепочек справа или слева имеющейся цепочки, но и вставкой цепочки куда-нибудь внутрь имеющейся. Вставка производится заменой нетерминального символа в цепочке на цепочку, которая стоит в правой части некоторого правила, в левой части которого находится этот нетерминал. Скажем, цепочку aabBBACbbb можно преобразовать в цепочку aabBBaaaCbbb, если есть правило A --> aaa. В этом смысле, порождаемая цепочка растет не равномерно с какого-то края, но как-бы «пухнет» изнутри.

17) Классы грамматик

Хомский ввел классы грамматик (и соответствующие классы языков) задавая ограничения на вид правил порождающей грамматики. Каждый класс грамматик имеет свою описательную мощность. Описательную мощность класса грамматик можно охарактеризовать, как возможность выражений в правилах грамматики определенных синтаксических отношений.

Грамматика с фразовой структурой G — это алгебраическая структура, упорядоченная четвёрка (VT, VN, P, S), где[1]:

V_T — алфавит (множество) терминальных символов — терминалов,

V_N — алфавит (множество) нетерминальных символов — нетерминалов,

P — конечное множество продукций (правил) грамматики,

S — начальный символ (источник).

К типу 0 по классификации Хомского относятся неограниченные грамматики — грамматики с фразовой структурой, то есть все без исключения формальные грамматики.

Практического применения в силу своей сложности такие грамматики не имеют.

6. реакция автматов- выходное слово на конкретное входное слово.

эквивалентные автоматы-их ходные и выходные сигналы срвпадают. их реакции на любое входное слово совпадают.

7. Состояния q автомата М и q' автомата М' считаются эквивалентными,если оба автомата, получив одну и ту же (любую) входную последовательность символов, перерабатывают ее в одинаковую выходную последовательность.

Автоматы М и М' называются эквивалентными, если для каждого состояния автомата М существует эквивалентное ему состояние автомата М' и наоборот.

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

Состояние q КА называется недостижимым, если к нему нет пути из начального состояния автомата. или состояние недостижимое, если под воздействием любого входного слова автомат никогда не перейдет в это состояние

9.Алфавит-конечное непустое множество символов неделимых в данном проастранстве

Символы-элементы этого множества

Слово- произвольная последовательность символов из данного алфавита

Длина слова- Число символов в слове  называют его длиной и обозначают .

Пустое слово- Может допускаться существование единственного слова длины 0, (пустое слово), не содержащее ни одного символа

10.конкатенация – операция сцепления строк.все объединяются. пример. U= abc. W=bca. U*W=abcbca.

Обращение строки-слово, составленное из символов слова в обратном порядке

Вопрос26. 3.2.1 Проверка существования языка грамматики

Алгоритм 3.1. Проверка существования языка грамматики.

Вход: КС-грамматика .

Выход: заключение о существовании или отсутствии языка грамматики.

Определим множество нетерминалов, порождающих терминальные строки .

Шаг 1. Положить N0=Ø.

Шаг 2. Вычислить и

Шаг 3. Если , то положить i:=i+1 и перейти к пункту 2, иначе считать .

Если , то выдать сообщение о том, что язык грамматики существует, иначе сообщить об отсутствии языка.

Конец алгоритма.

Пример 3.4. Дана грамматика , где множество правил P:

. Построим последовательность приближений множества N:

N0 = Ø;

N1 = {A, B};

N2 = {S, A, B};

N3 = {S, A, B}.

Т.к. N2=N3, то N = {S, A, B}, следовательно, язык грамматики существует, потому что начальный символ .

Вопрос27

Алгоритм 3.2. Устранение нетерминалов, не порождающих терминальных строк.

Вход: КС-грамматика .

Выход: КС-грамматика , такая, что и для всех существуют выводы , где .

Шаг 1. Определить множество нетерминалов, порождающих терминальные строки, с помощью алгоритма 3.1.

Шаг 2. Вычислить , где - это множество правил, содержащих бесполезные нетерминалы .

Конец алгоритма.

Пример 3.5. Дана грамматика с правилами P:

Преобразуем ее в эквивалентную грамматику G’ по алгоритму 3.2:

N0 = Ø;

N1 = {S, B, C};

N2 = {S, B, C}.

Т.к. N1 = N2, то N = {S, B, C}. После удаления бесполезных нетерминалов и правил вывода, получим грамматику с правилами

Вопрос32

Провести подготовительные эквивалентные преобразования

Первое преобразования

  1. Устранение Е правил

  2. Устранение цепных правил

For все нетерминалы Ai

For все ‘более ранние нетерминалы Ai(1<=j<i)’

Заменить каждое правило Ai->Ay на Ai->By |…| Bky (Где Aj->Bi |…| Bk)

End for

Устранение прямую левую рекурсию для Аi

G = ({+,(,),-,/,*,а,в}, {S,T,E},P,S)

P:

S->S+T|S-T|T

T->I*E|T/E|E

E->(S)|a|b

A1->A1+A2|A1-A2|A3

A2->A2*A3|A2/A3|A3

A3->(A1)|a|b

Vn={S,T,E}={A1,A2,A3}

A1->A2|A2B1, B1->+A2|+A2B1|-A2|-A2B1

A2->A3|A3B2, B2->A3|*A3B2|/A3|/A3B2

A3->(A1)|a|b

A1->A1+A2|A1-A2

A1->A2

B1->+A2|-A2 A1->A2

B1->+A2B1|-A2B1 A1->A2B1

A1->A1+A2|A1-A2|A2->A2|A2B1(устранение левой рекурсии)

B1->+A2|+A2B1|-A2|-A2B1

Вопрос30

3.2.4 Устранение цепных правил

Алгоритм 3.5. Устранение цепных правил.

Вход: КС-грамматика .

Выход: Эквивалентная КС-грамматика без цепных правил, т.е. правил вида , где .

Шаг 1. Для каждого нетерминала A вычислить множество выводимых из него нетерминалов, т.е. множество где

    1. Положить

    2. Вычислить

    3. Если , то положить i:=i+1 и перейти к пункту 1.2, иначе считать

Шаг 2. Построить множество P’ так: если не является цепным правилом , то включить в P’ правило для каждого A, такого, что .

Конец алгоритма.

Пример 3.8. Грамматика с правилами P: . Преобразуем ее в эквивалентную грамматику G’ по алгоритму 3.5.

Шаг 1.

Т.к. , то

Т.к. , то

Т.к. , то

Шаг 2. Преобразовав правила вывода грамматики, получим грамматику с правилами P’

.

16) Терминальный символ — объект формального языка, имеющий в нём конкретное неизменяемое значение и являющийся элементом построения слов данного языка.

Терминал (терминальный символ) — объект, непосредственно присутствующий в словах языка, соответствующего грамматике, и имеющий конкретное, неизменяемое значение (обобщение понятия «буквы»). В формальных языках, используемых на компьютере, в качестве терминалов обычно берут все или часть стандартных символов ASCII — латинские буквы, цифры и спец. символы.

Нетерминал (нетерминальный символ) — объект, обозначающий какую-либо сущность языка (например: формула, арифметическое выражение, команда) и не имеющий конкретного символьного значения.

18)Контекстно-зависимая грамматика имеет правила вида w' A w'' --> w' alpha w''. Здесь w' и w'' — цепочки (может быть пустые), составленные из терминальных и нетерминальных символов грамматики, alpha — непустая цепочка из тех же символов. Иначе говоря, нетерминальный символ A заменяется на цепочку alpha в контексте цепочек w' и w''.

С КЗ-грамматикой связан другой класс грамматик — неукорачивающие грамматики. Правила в таких грамматиках должны удовлетворять одному условию: длина правой части должна быть не меньше длины левой части. Так как в правилах КЗ-грамматик имеется условие, чтобы цепочка alpha была непустая, то эти грамматики также являются неукорачивающими. Но, самое интересное состоит в том, что для каждого языка, заданного неукорачивающей грамматикой, может быть придумана КЗ-грамматика, задающая тот же язык. Иначе говоря, классы языков, задаваемых КЗ-грамматиками и неукорачивающими грамматиками, совпадают.

Зачем так необходимо выделять класс языков, задаваемых неукорачивающими грамматиками? Дело в том, что для таких языков можно задать распознающий автомат. Распознающая грамматика конструируется следующим образом: получая на вход цепочку, последовательно делаем порождения, упорядочивая их по длине порождаемой цепочки. Т.к. грамматика неукорачивающая, то таких порождений будет конечное множество и, если среди них не нашлось совпадения с данной на вход цепочкой, то напечатать «нет».

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