Курсовая работа: Программа построения грамматики для конечного автомата
0-й тип
Правила имеют вид: x - y, где x и y – любые цепочки терминалов и нетерминалов
С фразовой структурой.
1-й тип
Правила имеют вид x - y, где | x | <= | y | (правая цепочка не короче левой).
контекстно–зависимые
(КЗ)
2-й тип
вид правил A - y, где A – нетерминал, y – любая цепочка
контекстно–свободные (КС)
3-й тип – автоматные грамматики (вид правил A - aB или A - b или A-e где a,b–терминалы; A,B–нетерминалы;e-пустая цеп).
Рисунок 1 – Классификация грамматик
Каждый тип грамматик включает грамматики более высоких типов, как частные случаи.
Для построения распознавателей грамматик, других целей очень часто необходимо преобразовать правила исходной грамматики к соответствующему виду. При этих преобразованиях язык, порождаемый исходной и полученными после преобразования грамматиками не должен меняться.
1.2.3 Эквивалентные преобразования грамматик
Для построения распознавателей грамматик, других целей часто необходимо преобразовывать правила исходной грамматики к соответствующему виду. При этом язык, порождаемый исходной и полученными после преобразования грамматиками, не должен меняться.
Две грамматики эквивалентны, если они порождают один и тот же язык(одни и те же цепочки терминальных символов).Рассмотрим ряд процедур, которые всегда приводят к эквивалентным преобразованиям.
1.2.4 Удаление или добавление бесполезных (непродуктивных и недостижимых) нетерминалов
В множестве Р правил грамматики G непродуктивным называют нетерминал, из которого нельзя получить цепочку терминалов. Для поиска в множестве правил непродуктивных нетерминалов используется следующее свойство.
Свойство А: Если все символы правой части правила продуктивны, то продуктивен и символ, стоящий в его левой части.
Алгоритм поиска непродуктивных нетерминалов в множестве правил P грамматики G:
– составить список нетерминалов для которых найдется хотя бы одно правило, правая часть которого состоит только из терминалов;
– если найдется такое правило, что все нетерминалы, стоящие в его правой части уже занесены в список, то добавить в список нетерминал стоящий в его левой части;
– если на предыдущем шаге список не пополняется, то получен исчерпывающий список всех продуктивных нетерминалов.
Hетерминалы грамматики не попавшие в список, построенный по приведенному выше алгоритму, являются непродуктивными и, не нарушая эквивалентности, из множества правил Р можно удалить все правила, содержащие такие нетерминалы.
В множестве правил грамматики недостижимым называют нетерминал, который не участвует в процессе вывода. цепочек. Для поиска недостижимых нетерминалов используется следующее свойство.
Свойство Б: Если нетерминал в левой части правила является достижимым, то достижимы все нетерминалы, стоящие в правой части этого правила.
Алгоритм поиска недостижимых нетерминалов в множестве правил P грамматики G:
– образовать одноэлементный список из начального нетерминала грамматики;
– если в множестве Р найдено правило, левая часть которого уже в списке, то включить в список все нетерминалы из его правой части;