Определение. Грамматика называется неукорачивающей или грамматикой без аннулирующих правил, если либо
  1. схема грамматики не содержит аннулирующих правил,
  2. либо схема грамматики содержит только одно правило вида <I> $, где <I> - начальный символ грамматики, и символ <I> не встречается в правых частях остальных правил грамматики.

Для грамматик, содержащих аннулирующие правила, справедливо следующее утверждение.

Утверждение. Для каждой КС-грамматики Г', содержащей аннулирующие правила, можно построить эквивалентную ей неукорачивающую грамматику Г, такую что L(Г')=L(Г).

Построение неукорачивающей грамматики предполагает увеличение числа правил заданной грамматики путем построения дополнительных правил, получаемых в результате исключения нетерминалов аннулирующих правил. Чтобы построить дополнительные правила необходимо выполнить все возможные подстановки пустой цепочки вместо аннулирующего нетерминала во все правила грамматики. Если же в грамматике есть правило вида <I> $ и символ <I> входит в правые части других правил грамматики, то следует ввести новый начальный символ <I'> и заменить правило <I> $ двумя новыми правилами: <I'> $ и <I'> <I>.
В качестве иллюстрации способа построения неукорачивающих грамматик, исключим аннулирующие правила из следующей грамматики:
Г2.3 :
R = { <I> a<I>b<I>,
<I> b<I>a<I>,
<I> $ }

Выполняя все возможные замены символа <I> в первом правиле грамматики, получаем четыре правила вида:

<I> a<I>b<I>, <I> ab<I>, <I> a<I>b, <I> ab

Поступая аналогично со вторым правилом, имеем:

<I> b<I>a<I>, <I> ba<I>, <I> b<I>a, <I> ba

Учитывая, что начальный символ, образующий аннулирующее правило, входит в правые части других правил грамматики, заменим правило
<I> $
правилами вида
<I'> $ и <I'> <I>

Построенная совокупность правил образует схему искомой неукорачивающей грамматики. Все приведенные выше преобразования грамматик могут быть использованы и оказаться полезными при построении как конечных, так и магазинных автоматов.