En la teoría del lenguaje formal , una gramática libre de contexto está en forma normal de Greibach ( GNF ) si los lados derechos de todas las reglas de producción comienzan con un símbolo terminal , seguido opcionalmente por algunas variables. Una forma no estricta permite una excepción a esta restricción de formato al permitir que la palabra vacía (epsilon, ε) sea un miembro del lenguaje descrito. La forma normal fue establecida por Sheila Greibach y lleva su nombre.
Más precisamente, una gramática libre de contexto está en forma normal de Greibach, si todas las reglas de producción son de la forma:
donde es un símbolo no terminal , es un símbolo terminal y es una secuencia (posiblemente vacía) de símbolos no terminales.
Observe que la gramática no tiene recursiones a la izquierda .
Toda gramática libre de contexto puede transformarse en una gramática equivalente en forma normal de Greibach. [1] Existen varias construcciones. Algunas no permiten la segunda forma de regla y no pueden transformar gramáticas libres de contexto que puedan generar la palabra vacía. Para una de esas construcciones, el tamaño de la gramática construida es O( n 4 ) en el caso general y O( n 3 ) si ninguna derivación de la gramática original consiste en un solo símbolo no terminal, donde n es el tamaño de la gramática original. [2] Esta conversión se puede utilizar para demostrar que todo lenguaje libre de contexto puede ser aceptado por un autómata de inserción en tiempo real (no determinista) , es decir, el autómata lee una letra de su entrada en cada paso.
Dada una gramática en GNF y una cadena derivable en la gramática con longitud n , cualquier analizador de arriba hacia abajo se detendrá en la profundidad n .