Documente Academic
Documente Profesional
Documente Cultură
R1. E := E + E r2 r2 r1
R2. E := id
¿Cuándo puede reducirse por una parte izquierda lo que parece ser la parte derecha de una
regla?
Puede haber partes derechas comunes Puede haber partes derechas comunes
Puede haber producciones Puede haber producciones ε ε
Procedimiento
A partir de la entrada
-Se sustituye una subcadena
• Adecuadamente elegida
• Que concuerde con un lado derecho
-Por el no terminal del lado izquierdo
• Trazando una derivación inversa
• Por el lado derecho
Ejemplo
Para la entrada id + id + id
Tipos De Conflictos
¿Que acción realizar: desplazar o reducir?
¿Que producción elegir al reducir cuando hay varias posibles?
Conflicto desplaza-reduce:
Conflicto reduce-reduce:
Supongamos una sencilla gramática que permite generar sentencias que son bien llamadas a
procedimientos o asignaciones.
Para la entrada suma:= 3, equivalente a los componentes léxicos: id:= núm., tenemos las
posibilidades
Analizadores LR
Vamos a analizar una técnica eficiente de análisis sintáctico ascendente que se puede utilizar
para analizar una amplia clase de gramáticas de contexto libre. La técnica se denomina
análisis sintáctico LR (k); la “L” es por el examen de la entrada de izquierda a derecha (en
inglés, left-to-right), la “R” por construir una derivación por la derecha (en inglés, rightmost
derivation) en orden inverso, y la k por el número de símbolos de entrada de examen por
anticipado utilizados para tomar las decisiones del análisis sintáctico.
Gramáticas LR
Es del tipo LL1 porque empieza derivando por la izquierda, y los caracteres son leídos de
izquierda a derecha, el 1 por que se lee 1 solo elemento de entrada.
Ambigüedad
Una gramática es recursiva por la izquierda si tiene un no Terminal A tal que existe una
derivación A->Aα para alguna cadena. Es decir por simple observación podemos identificar.
La recursividad va a implicar:
En cada paso del proceso de derivación de la cadena de entrada se realiza una predicción de
la posible producción a aplicar y se comprueba si existe una concordancia entre el s´
símbolo actual en la entrada con el primer terminal que se puede generar a partir de esa regla
de producción, si existe esta concordancia se avanza en la entrada y en el árbol de derivación,
en caso contrario se vuelve hacia atrás y se elige una nueva regla de derivación.
Una gramática LL (1) es aquella en la que su tabla de chequeo de sintaxis no posee entradas
múltiples, o sea, es suficiente con examinar sólo un símbolo a la entrada, para saber qué regla
aplicar. Toda gramática reconocible mediante el método de los diagramas de Conway es
LL(1).
El problema con este tipo de gramáticas es que tienden a generar más oraciones de las
necesarias. Si una gramática puede generar un determinado número de oraciones.
En el primero la construcción se inicia en la raíz de árbol y avanza hacia las hojas. En el
segundo la construcción se inicia en las hojas y avanza hacia la raíz.
La diferencia entre uno y otro es que en el primero se pueden construir manualmente
analizadores más eficiente con mayor facilidad mientras que en el segundo se puede
manejar una mayor cantidad de gramáticas y esquemas de traducción.
Poder analizar una frase es necesario encontrar una manera de generar a partir del símbolo
inicial. Básicamente, esto puede hacerse de dos formas diferentes:
Bibliografía:
A. Garrido, J. Iñesta, F. Moreno y J. Pérez. 2002. Diseño de compiladores.
Universidad de Alicante.
Vivancos, E. (2000), Compiladores I: una introduccion a la fase de analisis, Tema 3,
p´ aginas: 51-85. Especialmente para ejercicios.
Analisis Sintactico Ascendente [Seriada en línea].Pág.1-2 Disponible en: URL:
http://es.wikipedia.org/wiki/Compilador, [Consultado Diciembre 07, 2010]