Gramáticas Libres de
Contexto - GLCProf. Diego Mosquera
@diegomosuz
GLC-derivaciones
• Una derivación es una secuencia de producciones:
• Una derivación puede ser dibujada usando un árbol:• El símbolo inicial es la raíz del árbol.
• Para una producción � → ��…�� agregarle como hijos ��…�� al nodo X
GLC-derivaciones
• Por ejemplo, para la gramática:
� → � + � � ∗ � � |�
• Con cadena de entrada:
id * id + id
GLC-derivaciones
Derivación Árbol
GLC-derivaciones
Derivación Árbol
GLC-derivaciones
• Un árbol sintáctico tiene:• Símbolos terminales en las hojas.
• Símbolos no-terminales en los nodos internos.
• En un orden transversal por las hojas del árbol, puede leerse la entrada original.
• El árbol sintáctico muestra la asociatividad entre las operaciones.
GLC-derivaciones
• Existen dos formas principales de derivación:• Derivación por la izquierda.
• En cada paso se reemplaza el símbolo no-terminal que está más a la izquierda en la secuencia.• Derivación por la derecha.
• En cada paso se reemplaza el símbolo no-terminal que está más a la derecha en la secuencia.
• Nótese que ambas formas de derivación tienen el mismo árbol sintáctico:• Se diferencia sólo del orden en que las ramas del árbol son agregadas.
• Para la derivación por la derecha, la rama del subárbol izquierdo solo comienza a agregarse una vez que la rama del subárbol derecho se completa (hojas con puros símbolos terminales).
• Es importante señalar que existen otras formas de derivaciones:• …sin embargo, las derivaciones por la izquierda o por la derecha son las más usadas.
GLC-derivaciones
• Para resumir:• No sólo nos interesa determinar cuando una cadena s ∈ �(�)
• Necesitamos el árbol sintáctico de s
• Una derivación define un árbol sintáctico:• …pero un árbol sintáctico se puede obtener a través de múltiples derivaciones.
• De todas las posibles formas de derivaciones, estamos particularmente interesados en las derivaciones por la izquierda y por la derecha.
• Necesarias y suficientes para la implementación del parser.
GLC-derivaciones
• Ejercicio 1: Cuáles de las siguientes se pueden derivar dada la gramática:
� → ��� → ���� → ����� → ����
� → ��� → ���� → ������ → ������� → ���� ��
� → ��
� → ��� → ���� → ����� � → ���� �
GLC-derivaciones
• Ejercicio 2: Cuáles de los siguientes son árboles sintácticos válidos para la GLC del ejercicio anterior:
Top Related