Dada una gramática independiente del contexto es una tupla , donde:
: Conjunto de símbolos no terminales . : Conjunto de símbolos terminales (o alfabeto de la gramática). : Símbolo de arranque (Start) o axioma de la gramática . : Conjunto de reglas de producción. .
Una producción se dice que es unitaria si tiene la forma . Las producciones unitarias hacen a la gramática innecesariamente compleja ya que simplemente renombran un símbolo no terminal. Este algoritmo elimina las producciones unitarias de una gramática G basándose en la construcción del conjunto H definido como:
H = ;
forall (Producción de la forma ) do H = H {(A, B)};
endwhile (H cambie) doforall (par de parejas de la forma (A, B)(B, C)) do)
if ((A, C) H) then H = H {(A, C)};
endendend
*Eliminar todas las producciones unitarias;
forall (Producción B ) doforall (pareja (A, B) H) do Añadir a la gramática una producción A endend