s5.2-gramaticas libres de contexto - derivacion.pdf

10
Gramáticas Libres de Contexto - GLC Prof. Diego Mosquera @diegomosuz

Upload: natacharivera

Post on 09-Dec-2015

217 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: S5.2-Gramaticas libres de contexto - derivacion.pdf

Gramáticas Libres de

Contexto - GLCProf. Diego Mosquera

@diegomosuz

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

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

Page 3: S5.2-Gramaticas libres de contexto - derivacion.pdf

GLC-derivaciones

• Por ejemplo, para la gramática:

� → � + � � ∗ � � |�

• Con cadena de entrada:

id * id + id

Page 4: S5.2-Gramaticas libres de contexto - derivacion.pdf

GLC-derivaciones

Derivación Árbol

Page 5: S5.2-Gramaticas libres de contexto - derivacion.pdf

GLC-derivaciones

Derivación Árbol

Page 6: S5.2-Gramaticas libres de contexto - derivacion.pdf

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.

Page 7: S5.2-Gramaticas libres de contexto - derivacion.pdf

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.

Page 8: S5.2-Gramaticas libres de contexto - derivacion.pdf

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.

Page 9: S5.2-Gramaticas libres de contexto - derivacion.pdf

GLC-derivaciones

• Ejercicio 1: Cuáles de las siguientes se pueden derivar dada la gramática:

� → ��� → ���� → ����� → ����

� → ��� → ���� → ������ → ������� → ���� ��

� → ��

� → ��� → ���� → ����� � → ���� �

Page 10: S5.2-Gramaticas libres de contexto - derivacion.pdf

GLC-derivaciones

• Ejercicio 2: Cuáles de los siguientes son árboles sintácticos válidos para la GLC del ejercicio anterior: