S5.2-Gramaticas libres de contexto - derivacion.pdf

Post on 09-Dec-2015

217 views 1 download

Transcript of S5.2-Gramaticas libres de contexto - derivacion.pdf

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: