Successfully reported this slideshow.

Análisis Sintactico Ascendente

2

Share

Upcoming SlideShare
S01  _2_transformaciones
S01 _2_transformaciones
Loading in …3
×
1 of 15
1 of 15

Análisis Sintactico Ascendente

2

Share

Download to read offline

Profundización y ejemplos sobre análisis sintáctico descendente predictivo, muestra el diagrama de transiciones que puede generarse a partir de la gramática.

Profundización y ejemplos sobre análisis sintáctico descendente predictivo, muestra el diagrama de transiciones que puede generarse a partir de la gramática.

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

Análisis Sintactico Ascendente

  1. 1. Análisis Sintáctico Ascendente 4.5 en adelante Leonel Morales Díaz [email_address] Copyright 2008 by Leonel Morales Díaz – Ingeniería Simple. Derechos reservados Disponible en: http://www.ingenieriasimple.com/compiladores
  2. 2. Por desplazamiento y reducción <ul><li>La entrada se “reduce” al símbolo inicial </li></ul><ul><li>Desplazando elementos de la entrada </li></ul><ul><li>Llegar de las hojas hacia la raíz </li></ul>
  3. 3. Procedimiento <ul><li>A partir de la entrada </li></ul><ul><ul><li>Se sustituye una subcadena </li></ul></ul><ul><ul><ul><li>Adecuadamente elegida </li></ul></ul></ul><ul><ul><ul><li>Que concuerde con un lado derecho </li></ul></ul></ul><ul><ul><li>Por el no terminal del lado izquierdo </li></ul></ul><ul><ul><ul><li>Trazando una derivación inversa </li></ul></ul></ul><ul><ul><ul><li>Por el lado derecho </li></ul></ul></ul>
  4. 4. Ejemplo <ul><li>Gramática </li></ul><ul><li>S => a AB e </li></ul><ul><li>A => A bc | b </li></ul><ul><li>B => d </li></ul><ul><li>Entrada “abbcde” se reduce a S por: </li></ul><ul><li>abbcde </li></ul>
  5. 5. Ejemplo <ul><li>Gramática </li></ul><ul><li>S => a AB e </li></ul><ul><li>A => A bc | b </li></ul><ul><li>B => d </li></ul><ul><li>Entrada “abbcde” se reduce a S por: </li></ul><ul><li>abbcde </li></ul><ul><li>a A bcde </li></ul>
  6. 6. Ejemplo <ul><li>Gramática </li></ul><ul><li>S => a AB e </li></ul><ul><li>A => A bc | b </li></ul><ul><li>B => d </li></ul><ul><li>Entrada “abbcde” se reduce a S por: </li></ul><ul><li>abbcde </li></ul><ul><li>a A bcde </li></ul><ul><li>a A de </li></ul><ul><li>¿Por qué no a AA cde ? </li></ul>
  7. 7. Ejemplo <ul><li>Gramática </li></ul><ul><li>S => a AB e </li></ul><ul><li>A => A bc | b </li></ul><ul><li>B => d </li></ul><ul><li>Entrada “abbcde” se reduce a S por: </li></ul><ul><li>abbcde </li></ul><ul><li>a A bcde </li></ul><ul><li>a A de </li></ul><ul><li>a AB e </li></ul>
  8. 8. Ejemplo <ul><li>Gramática </li></ul><ul><li>S => a AB e </li></ul><ul><li>A => A bc | b </li></ul><ul><li>B => d </li></ul><ul><li>Entrada “abbcde” se reduce a S por: </li></ul><ul><li>abbcde </li></ul><ul><li>a A bcde </li></ul><ul><li>a A de </li></ul><ul><li>a AB e </li></ul><ul><li>S </li></ul>
  9. 9. Ejemplo <ul><li>Gramática </li></ul><ul><li>S => a AB e </li></ul><ul><li>A => A bc | b </li></ul><ul><li>B => d </li></ul><ul><li>Entrada “abbcde” se reduce a S por: </li></ul><ul><li>abbcde </li></ul><ul><li>a A bcde </li></ul><ul><li>a A de </li></ul><ul><li>a AB e </li></ul><ul><li>S </li></ul>Mangos Mangos Mangos Mangos
  10. 10. Mangos <ul><li>Subcadena </li></ul><ul><li>Concuerda con un lado derecho </li></ul><ul><li>Se reduce al no terminal de la izquierda </li></ul><ul><li>Avanza un paso en la derivación inversa </li></ul><ul><ul><li>De una derivación derecha </li></ul></ul><ul><li>Si la gramática no es ambigua </li></ul><ul><ul><li>Existe exactamente un mango </li></ul></ul>
  11. 11. Volviendo al ejemplo <ul><li>Gramática </li></ul><ul><li>S => a AB e </li></ul><ul><li>A => A bc | b </li></ul><ul><li>B => d </li></ul><ul><li>Es recursiva por la izquierda </li></ul><ul><li>¿Puede derivar abbcde? </li></ul>
  12. 12. Volviendo al ejemplo <ul><li>Gramática </li></ul><ul><li>S => a AB e </li></ul><ul><li>A => A bc | b </li></ul><ul><li>B => d </li></ul><ul><li>Es recursiva por la izquierda </li></ul><ul><li>¿Puede derivar abbcde? </li></ul><ul><ul><li>Solo por la derecha </li></ul></ul>
  13. 13. Ejercicio <ul><li>Programa -> Instrucción | { Rutina } </li></ul><ul><li>Rutina -> Instrucción ; Instrucción | </li></ul><ul><li>Instrucción ; Rutina </li></ul><ul><li>Instrucción -> nil | Variable ++ | </li></ul><ul><li>Variable -- | </li></ul><ul><li>While Prueba do Programa </li></ul><ul><li>Prueba -> Variable <> 0 | </li></ul><ul><li>Variable = 0 </li></ul><ul><li>Analizar Ascendentemente </li></ul><ul><li>While v<>0 do { </li></ul><ul><li>y++; </li></ul><ul><li>x++; </li></ul><ul><li>v--; </li></ul><ul><li>} </li></ul>
  14. 14. Gramáticas LR <ul><li>Gramáticas LR </li></ul><ul><ul><li>Left to Right </li></ul></ul><ul><ul><ul><li>de izquierda a derecha </li></ul></ul></ul><ul><ul><li>Rightmost production </li></ul></ul><ul><ul><ul><li>La producción de más a la derecha </li></ul></ul></ul><ul><li>Variaciones: SLR, LALR, LR(k) </li></ul>
  15. 15. Tercer proyecto <ul><li>Compilador de programas while </li></ul><ul><li>Generando script de assembler para debug </li></ul><ul><li>Tomando en cuenta los macros </li></ul><ul><li>Fecha de entrega 21-10-2006 </li></ul>

×