Clasificación de lenguaje formal
para resumir
Esto se basa en el "Tutorial de principios de compilación (cuarta edición)" Hu Yuanyi
(he leído a otros profesores y son un poco diferentes . Explicaré las diferencias en los puntos de atención)
La diferencia entre los 4 tipos de gramática
Tipo 0
La única restricción : debe haber un símbolo no terminal en la parte izquierda de la producción.
Tipo 1
La única diferencia con el Tipo 0 : la parte derecha de la producción no puede estar vacía (para garantizar que la longitud de la parte derecha no sea más corta que la longitud de la izquierda)
Tipo 2
La única restricción : la parte izquierda de la producción tiene exactamente un no terminal
Tipo 3
La única diferencia con el Tipo 2 : hay como máximo un símbolo no terminal a la derecha de la producción
punto importante
Acerca del tipo 2
α A δ → α β δ \ alpha A \ delta → \ alpha \ beta \ delta α A δ→α β δ
AAA debe estar enα \ alphaα、δ \ deltaEn el contexto de δ ¿ puede serβ \ betareemplazado por β , lo cual es seguro
Entonces el libro dice que debe haber al menos un símbolo no terminal en la parte derecha de la producción, es decir, la gramática de tipo 1 no puede aparecer S → ε S → \ varepsilonS→Una producción en forma de ε .
Hay otro dicho:
(1) Si hay S → ε S → \ varepsilonS→ε , luegoSSS no debe aparecer en la parte derecha de la producción
(2) generalmente no se permite reemplazarlo conε \ varepsilonε a menos que el símbolo de inicio produzcaε \ varepsilonε
Entonces esta declaración, la parte derecha de la producción no permite símbolos no terminales
[los dos son esencialmente los mismos:∣ α ∣ | \ alpha |∣ α ∣ ≤ \ leq≤ | b | | \ beta |∣ β ∣】
Si sigue esta declaración, entonces la relación entre las gramáticas es: de lo
contrario, como dice la tabla de resumen, las gramáticas de tipo 2 pueden no pertenecer necesariamente a las gramáticas de tipo 1 , porque las gramáticas de tipo 2 pueden tener S → ε S → \ varepsilonS→mi
Qué tipo de declaración se basa en lo que enseña el profesor.