A production или производственное правило в информатике, является правилом перезаписи с указанием замены символов, которая может выполняться рекурсивно для генерации новых последовательностей символов. Конечный набор производств является основным компонентом в спецификации формальной грамматики (в частности, порождающей грамматики ). Остальные компоненты - это конечный набор из нетерминальных символов, конечный набор (известный как алфавит) из оконечных символов, которые не пересекаются с и выделенным символом - начальный символ.
В неограниченной грамматике продукция имеет форму , где и - произвольные строки терминалов и нетерминалов, а не может быть пустой строкой. Если - пустая строка, это обозначается символом или (вместо того, чтобы оставлять правую часть пустой). Таким образом, производства являются членами декартова произведения
где - словарь, - оператор звезды Клини, обозначает конкатенацию, обозначает набор union, а обозначает набор минус или разность наборов. Если мы не допускаем появления начального символа в (слово справа), мы должны заменить на в правой части декартово обозначение произведения.
Другие типы формальной грамматики в иерархии Хомского накладывают дополнительные ограничения на то, что составляет продукцию. В частности, в контекстно-свободной грамматике левая часть продукции должна быть единственным нетерминальным символом. Таким образом, продукция имеет вид:
Для создания Строка в языке начинается со строки, состоящей только из одного начального символа, а затем последовательно применяются правила (любое количество раз и в любом порядке) для перезаписи этой строки. Это останавливается, когда мы получаем строку, содержащую только терминалы. Язык состоит из всех строк, которые могут быть сгенерированы таким образом. Любая конкретная последовательность законных выборов, сделанных в процессе переписывания, дает одну конкретную строку на языке. Если существует несколько различных способов создания этой единственной строки, то грамматика называется неоднозначной.
. Например, предположим, что алфавит состоит из и , с начальным символом , и у нас есть следующие правила:
, затем мы начинаем с и можем выбрать правило, которое будет применяться к нему. Если мы выбираем правило 1, мы заменяем на и получаем строку . Если мы снова выберем правило 1, мы заменим на и получим строку . Этот процесс повторяется до тех пор, пока у нас не будут только символы алфавита (т.е. и ). Если теперь выбрать правило 2, мы заменим на и получим строку , и готово. Мы можем записать эту серию вариантов более кратко, используя символы: . Язык грамматики - это набор всех строк, которые можно создать с помощью этого процесса: .