Производство (информатика)
Эта статья нуждается в дополнительных цитатах для проверки . ( ноябрь 2012 г. ) |
Часть серии о |
Формальные языки |
---|
Производственное определяющее или производственное правило в информатике — это правило перезаписи, замену символов, которая может выполняться рекурсивно для создания новых последовательностей символов. Конечный набор продукций является основным компонентом спецификации формальной грамматики (в частности, порождающей грамматики ). Остальные компоненты представляют собой конечное множество , нетерминальных символов конечное множество (известное как алфавит) терминальных символов , не пересекающихся с и выдающийся символ это стартовый символ .
В неограниченной грамматике продукция имеет вид , где и являются произвольными строками терминалов и нетерминалов, и не может быть пустой строкой . Если пустая строка, она обозначается символом , или (вместо того, чтобы оставлять правую часть пустой). Таким образом, произведения являются членами декартова произведения.
- ,
где это словарный запас , является звездным оператором Клини , указывает на конкатенацию , обозначает объединение множеств , а обозначает набор минус или набор разностей . Если мы не разрешим появление стартового символа в (слово справа), нам нужно заменить к справа от декартового символа произведения. [1]
Другие типы формальной грамматики в иерархии Хомского накладывают дополнительные ограничения на то, что представляет собой производство. В частности, в контекстно-свободной грамматике левая часть продукции должна быть одним нетерминальным символом. Итак, произведения имеют вид:
Генерация грамматики
[ редактировать ]Чтобы сгенерировать строку в языке, нужно начать со строки, состоящей только из одного начального символа , а затем последовательно применять правила (любое количество раз и в любом порядке) для перезаписи этой строки. Это прекращается, когда получается строка, содержащая только терминалы. Язык состоит из всех строк, которые можно сгенерировать таким образом. Любая конкретная последовательность допустимых вариантов выбора, предпринятая в ходе этого процесса переписывания, дает в языке одну конкретную строку. Если существует несколько разных способов генерации этой единственной строки, то грамматика называется неоднозначной .
Например, предположим, что алфавит состоит из и , с начальным символом , и у нас есть следующие правила:
- 1.
- 2.
тогда мы начнем с и может выбрать правило, которое будет применяться к нему. Если мы выберем правило 1, мы заменим с и получить строку . Если мы снова выберем правило 1, мы заменим с и получить строку . Этот процесс повторяется до тех пор, пока у нас не останутся только символы алфавита (т. е. и ). Если мы теперь выберем правило 2, мы заменим с и получить строку , и готово. Мы можем записать эту серию выборов более кратко, используя символы: . Язык грамматики — это набор всех строк, которые могут быть сгенерированы с помощью этого процесса: .
См. также
[ редактировать ]- Формальная грамматика
- Завершено автоматически
- Генеративная грамматика
- L-система
- Переписать правило
- Форма Бэкуса – Наура (компактная форма для записи произведений контекстно-свободной грамматики.)
- Правило построения фразы
- Пост-каноническая система (Продукционные системы Эмиля Поста - модель вычислений.)
Ссылки
[ редактировать ]- ^ См. Клаус Рейнхардт: Машины с приоритетным плательщиком и синхронизация полутрековых языков. Архивировано 17 января 2018 г. в Wayback Machine ; Факультет компьютерных наук Штутгартского университета; 1994 (немецкий)