Análisis Sintáctico Ascendente 4.5 en adelante Leonel Morales Díaz [email_address] Copyright 2008 by Leonel Morales Díaz –...
Por desplazamiento y reducción <ul><li>La entrada se “reduce” al símbolo inicial </li></ul><ul><li>Desplazando elementos d...
Procedimiento <ul><li>A partir de la entrada </li></ul><ul><ul><li>Se sustituye una subcadena </li></ul></ul><ul><ul><ul><...
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 <...
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 <...
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 <...
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 <...
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 <...
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 <...
Mangos <ul><li>Subcadena </li></ul><ul><li>Concuerda con un lado derecho </li></ul><ul><li>Se reduce al no terminal de la ...
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><...
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><...
Ejercicio <ul><li>Programa  ->  Instrucción  | {  Rutina  } </li></ul><ul><li>Rutina  ->  Instrucción  ;  Instrucción  | <...
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 der...
Tercer proyecto <ul><li>Compilador de programas while </li></ul><ul><li>Generando script de assembler para debug </li></ul...
Upcoming SlideShare
Loading in …5
×

Análisis Sintactico Ascendente

7,002 views

Published on

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.

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,002
On SlideShare
0
From Embeds
0
Number of Embeds
1,017
Actions
Shares
0
Downloads
107
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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>

×