150 likes | 259 Views
Análisis Sintáctico Ascendente. 4.5 en adelante. Por desplazamiento y reducción. La entrada se “reduce” al símbolo inicial Desplazando elementos de la entrada Llegar de las hojas hacia la raíz. Procedimiento. A partir de la entrada Se sustituye una subcadena Adecuadamente elegida
E N D
Análisis Sintáctico Ascendente 4.5 en adelante
Por desplazamiento y reducción • La entrada se “reduce” al símbolo inicial • Desplazando elementos de la entrada • Llegar de las hojas hacia la raíz
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
Gramática S => aABe A => Abc | b B => d Entrada “abbcde” se reduce a S por: abbcde Ejemplo
Gramática S => aABe A => Abc | b B => d Entrada “abbcde” se reduce a S por: abbcde aAbcde Ejemplo
Gramática S => aABe A => Abc | b B => d Entrada “abbcde” se reduce a S por: abbcde aAbcde aAde ¿Por qué no aAAcde? Ejemplo
Gramática S => aABe A => Abc | b B => d Entrada “abbcde” se reduce a S por: abbcde aAbcde aAde aABe Ejemplo
Gramática S => aABe A => Abc | b B => d Entrada “abbcde” se reduce a S por: abbcde aAbcde aAde aABe S Ejemplo
Gramática S => aABe A => Abc | b B => d Entrada “abbcde” se reduce a S por: abbcde aAbcde aAde aABe S Ejemplo Mangos Mangos Mangos Mangos
Mangos • Subcadena • Concuerda con un lado derecho • Se reduce al no terminal de la izquierda • Avanza un paso en la derivación inversa • De una derivación derecha • Si la gramática no es ambigua • Existe exactamente un mango
Gramática S => aABe A => Abc | b B => d Es recursiva por la izquierda ¿Puede derivar abbcde? Volviendo al ejemplo
Gramática S => aABe A => Abc | b B => d Es recursiva por la izquierda ¿Puede derivar abbcde? Solo por la derecha Volviendo al ejemplo
Programa -> Instrucción | { Rutina } Rutina -> Instrucción ; Instrucción | Instrucción ; Rutina Instrucción -> nil | Variable ++ | Variable -- | While Prueba do Programa Prueba -> Variable <> 0 | Variable = 0 Analizar Ascendentemente While v<>0 do { y++; x++; v--; } Ejercicio
Gramáticas LR • Gramáticas LR • Left to Right • de izquierda a derecha • Rightmost production • La producción de más a la derecha • Variaciones: SLR, LALR, LR(k)
Tercer proyecto • Compilador de programas while • Generando script de assembler para debug • Tomando en cuenta los macros • Fecha de entrega 21-10-2006