Определение контекстно-свободных грамматик
Рассмотрим пример:Пусть дан язык палиндромов. W – палиндром, если Существует рекурсивное определение того, что цепочка из символов «0» и «1» является палиндромом. Это описание начинается с базиса:
В базисе правая часть не содержит переменных. Это понимать так: Если взять произвольную цепочку w из класса палиндромов P, то 0w0 так же будет находится в классе P. Описание языка с помощью грамматик состоит из четырех компонент: 1. Есть конечное множество символов, из которых состоят цепочки определенного языка. Эти символы называются терминальными (терминалами). 2. Существует конечное множество переменных, называемых не терминалами (синтаксические категории). 3. Одна из переменных представляет определяемый язык и она называется стартовым символом. Другие переменные представляют дополнительные классы цепочек, которые помогают определить язык, заданный стартовым символом. 4. Имеется конечное множество продукций (или правил вывода), которые представляют рекурсивное определение языка. Каждая продукция состоит из трех частей: а). Переменная, определяемая продукцией. Эту переменную часто называют «головой продукции». б). Символ продукции: в). Конечная цепочка, состоящая из терминалов и переменных (возможно и пустая), называемая «телом продукции» и представляющая способ образования цепочек языка, указанных в голове продукции. По этому способу мы оставляем терминалы неизменными и вместо каждой переменной в теле подставляем любую цепочку, про которую известно, что она принадлежит языку этой переменной. Обозначается: Исходя из этого, грамматику палиндромов можно записать как: Пример. КСГ, которая представляет выражение языков программирования в несколько упрощенном виде: 2 операции: + * Допустим, что аргументы могут быть идентификаторами, однако произвольными, т.е. буквами, за которыми следует любая последовательность букв и цифр, в том числе пустая. Буквы: а, b. Цифры: 0, 1. Каждый идентификатор должен начинаться с буквы a или b, за которой следует цепочка {a,b,0,1}* В нашей грамматики нужны 2 переменные: E – выражение, определяемого языка, является стартовым символом I – идентификаторы. Ее язык в действительности регулярен и задается (a+b)(a+b+0+1)* Правила для упрощения языка программирования: 1. E 2. E 3. E 4. E 5. I 6. I
7. I 8. I 9. I 10. I
E I G=({E,I}, {a,b,0,1,+,*,(,)}, P, E)
Популярное: Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... ![]() ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (375)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |