Una GLC está en forma stándard (o Forma Normal de Greibach) si cada producción tiene la forma:
En una GFS cada paso de derivación, a excepción del primero, es y genera al menos un terminal. Así, derivar un string de longitud requiere como máximo pasos de derivación.
Conversión
Supongamos una GLC bien conformada , cada producción suya tendrá una de las formas:
Las primeras tres producciones están en forma stándard, y la cuarta (de forma ) se convierte por sustitución:
Sea una derivación por izquierda . Esa derivación será finita mientras no se repita un no terminal en la secuencia . Si en algún caso se da se da la derivación que es un bucle infinito al derivar por izquierda!!
Eliminación de No Terminales Recursivos por Izquierda
Recursión Directa
Sea la GLC con las reglas de :
En se reemplazan esas reglas por:
Se verifica por regla de Arden:
Recursión Indirecta
Sea un subconjunto de en . Sea una subgramática de donde cada regla de tiene parte izquierda . El subconjunto se elije de manera que no hayan SNRI en . Procedimiento:
- Sea con y sean . Se reemplaza por . De esta manera se transforman las recursiones indirectas en recursiones directas.
- Se eliminan los SNRI de recursion directa introducidos en el paso 1.
Dada una GLC cualquiera, es posible construir una GFS fuertemente equivalente.