Секция правил грамматики
A: production_body { program_fragment; } ;
Секция грамматических правил состоит из правил, которые записываются следующим образом:
A: production_body;
где A - имя нетерминала, production_body -последовательность нуля или большего количества имен и литералов.
Имена могут быть произвольной длины и содержать буквы, цифры (как обычно, цифра не может быть первой литерой имени), подчеркивания и точки. Литерал состоит из литер, заключенных в апострофы. Как и в языке C, литера обратная косая черта (backslash) используется для задания управляющей последовательности (escape sequence).
Если имеется несколько грамматических правил с одинаковой левой частью, то может использовать литера вертикальная черта для объединения всех правил в одно:
A: production_body_1 | production_body_2 ;
Заметим, что каждое имя, не объявленное как терминал, считается нетерминалом. Каждый нетерминал должен появиться в левой части, хотя бы одного правила. Нетерминал, являющийся левой частью первого правила, по умолчанию считается аксиомой. Вообще говоря, аксиому можно определить в секции объявлений как:
%start axiom.