1 / 21

Práctica 11

Práctica 11. Analizadores semánticos: DDS y EDT. Analizador semántico con CUP. Primero vamos a explicar el analizador semántico cuya gramática es la siguiente: A ::= L ; A| L ; L ::= L and J | L or J| L nand J| L nor | L xor J| L xnor J| J

krikor
Download Presentation

Práctica 11

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Práctica 11 Analizadores semánticos: DDS y EDT

  2. Analizador semántico con CUP • Primero vamos a explicar el analizador semántico cuya gramática es la siguiente: • A ::= L ; A| L ; • L ::= L and J | L orJ| L nandJ| L nor| L xorJ| L xnorJ| J • J ::= ( L )| true| false| not ( L )| C • C ::= numero == numero • | numero != numero • | numero < numero • | numero > numero • | numero <= numero • | numero >= numero

  3. Analizador semántico con CUP • Para la explicación utilizaremos la siguiente cadena como entrada: Numero > numero xor numero==numero nand true; • Y el árbol sintáctico es el que se muestra:

  4. Analizador semántico con CUP

  5. Analizador semántico con CUP • En primer lugar el analizador calcula las expresiones numéricas y el resultado lo almacena como un atributos sintetizados de C.

  6. Analizador semántico con CUP • Posteriormente estos valores se propagan a J y L en cada caso.

  7. Analizador semántico con CUP • Posteriormente estos valores se propagan a J y L en cada caso. • A continuación se hace el cálculo xor y se guarda en L.

  8. Analizador semántico con CUP • Luego se hace la 2ª operación (nand). Y el valor se guarda en L.

  9. Analizador semántico con CUP • Luego se hace la 2ª operación (nand). Y el valor se guarda en L. • Por último, A recoge el atributo sintetizado devuelto por L y lo imprime.

  10. EDT con ANTLR • En esta segunda parte realizaremos el mismo proceso para entender de qué manera funciona nuestro analizador semántico con ANTLR. • La cadena de entrada para la explicación es la siguiente:8/4+2*5; • El árbol sintáctico es el siguiente:

  11. EDT con ANTLR

  12. EDT con ANTLR • Al igual que el analizador anterior, primero se guarda los lexemas en f como atributos sintetizados.

  13. EDT con ANTLR • Al igual que el analizador anterior, primero se guarda los lexemas en f como atributos sintetizados. • A continuación se tiene que comunicar el dato a t1 para poder realizar la operación. Atributo Heredado.

  14. EDT con ANTLR • En caso de ser una producción vacía simplemente devuelve el dato sin modificarlo.

  15. EDT con ANTLR • Se realiza la operación en cada caso.

  16. EDT con ANTLR • Se realiza la operación en cada caso. • Una vez calculado el resultado se le tiene que pasar al antecedente (t en este caso).

  17. EDT con ANTLR • De esta manera se sigue realizando los pasos para calcular el resultado final. • e1 recoge el atributo heredado de t.

  18. EDT con ANTLR • Como antes, si la producción es vacía, devuelve el resultado sin modificar como atributo sintetizado.

  19. EDT con ANTLR • Se realiza la operación con el atributo heredado y con el sintetizado devuelto por t y e1.

  20. EDT con ANTLR • Se realiza la operación con el atributo heredado y con el sintetizado devuelto por t y e1. • Por último el recoge el atributo sintetizado de e1*. *Con este e1 nos referimos a la producción de nivel superior.

  21. EDT con ANTLR • Antes de realizarse la última reducción el analizador imprimirá el resultado final. • La producción a::= λ no se devuelve nada pues no tiene que calcular ningún valor.

More Related