1 / 14

Ejemplo Práctico de un Compilador Pequeño

Análisis Sintáctico. Programa Principal. Generador Código Objeto. Asignar. Pila. Pascal. Ejemplo Práctico de un Compilador Pequeño. Características:. Lenguaje Fuente. Análisis Léxico. Subrutina: Análisis Léxico. Análisis Sintáctico. Generador de Código Objeto. Lenguaje Objeto.

chaman
Download Presentation

Ejemplo Práctico de un Compilador Pequeño

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. Análisis Sintáctico Programa Principal Generador Código Objeto Asignar Pila Pascal Ejemplo Práctico de un Compilador Pequeño Características: Lenguaje Fuente Análisis Léxico Subrutina: Análisis Léxico Análisis Sintáctico Generador de Código Objeto Lenguaje Objeto

  2. Gramática Independiente del Contexto Sintaxis Lenguaje Fuente Instrucciones de Asignación Expresiones Aritméticas: + , - , ( , ) A=3 + B + ( 8 – Z ); Expresada a través de la Gramática Construcción de Árboles Sintácticos

  3. ASG VAR = EXP ; EXP TER REX REX + EXP | - EXP | VACIO TER ( EXP ) | VAR | CTE VAR A | ... | Z CTE 0 | ... | 9 Línea formada por Gramática del lenguaje Compuesta por reglas Izquierda: Símbolo No Terminal y ::= Derecha: Símbolos Terminales y No Terminales En nuestro caso:

  4. Formado a partir de la Gramática Estructura según el árbol ASG VAR = EXP ; REX TER CTE (Vacío) 2 Árbol Sintáctico Sentencia = Secuencia de símbolos terminales A

  5. Dada la Sentencia y la Gramática Análisis Sintáctico describe el árbol correspondiente a dicha sentencia Método Descendente Parte del símbolo principal hasta llegar a la sentencia Derivación Método Ascendente Parte de la sentencia hasta llegar al símbolo principal Reducción Árbol Sintáctico 2 Métodos

  6. Análisis Sintáctico 1 Subrutina para cada símbolo No Terminal Lee secuencias de caracteres de los símbolos terminales de la Gramática Análisis Léxico Cuando no sea un blanco, será el próximo carácter Todos los símbolos terminales están formados por 1 carácter Solución: Antes de llamar a la subrutina ya habremos leído el nuevo carácter a través del léxico Llamada al léxico antes y después de la subrutina Implementación Consideración: Convenio para conocer qué subrutina del análisis sintáctico llama al léxico y en qué punto

  7. Coloca en la cima de la pila la cte dada top:= top+1; pila[top]:=cte PUSHC <cte> Coloca en la cima de la pila la dirección de la variable dada top:= top+1; pila[top]:=dir.var. PUSHA <dir.var> Asume que el valor de la cima de la pila es una dirección. Se extrae de la pila y se pone el valor ubicado en la dirección LOAD pila[top]:=mem[pila[top]] mem[pila[top-1]]:=pila[top] top:=top-2 Asume que la cima es un valor y la subcima una dirección. Almacena el valor en la dirección. Disminuye en 2 la pila. STORE Lenguaje Máquina Objeto Lenguaje tipo ensamblador que pertenece a una hipotética máquina de pila

  8. Cambia el signo del valor situado en la cima de la pila pila[top]:= - pila[top] NEG Opera en los dos elementos de la cima, extrayéndolos y dejando el resultado de la suma. Disminuye en 1 la pila pila[top-1]:=pila[top]+pila[top-1] top:=top-1 ADD Reservamos una zona de memoria para almacenar todas las variables pila variables programa Lenguaje Máquina Objeto

  9. PUSHA A PUSHC 2 STORE PUSHA dir. Var. ______________ ______________ STORE Instrucciones que evaluarán la expresión VAR EXP ASG PUSHA dir.var. Bloque STORE Esquema de traducción A=2; Todo programa terminará siempre con la instrucción STORE

  10. ASG VAR = EXP ; CTE 0 | ... | 9 TER ( EXP ) | VAR | CTE EXP TER REX VAR A | ... | Z REX + EXP | - EXP | VACIO 2+3 EXP TER REX CTE EXP TER REX PUSHC ADD CTE REX CTE 2 + 3 vacío Esquema de traducción Expresión: PUSHC 2 PUSHC 3 ADD

  11. ASG VAR = EXP ; EXP TER REX TER ( EXP ) | VAR | CTE VAR A | ... | Z CTE 0 | ... | 9 REX + EXP | - EXP | VACIO C+3 EXP TER REX VAR EXP TER REX CTE TER LOAD C + 3 vacío Esquema de traducción Expresión: PUSHA dir C LOAD PUSHC 3 ADD

  12. ASG VAR = EXP ; EXP TER REX TER ( EXP ) | VAR | CTE VAR A | ... | Z CTE 0 | ... | 9 REX + EXP | - EXP | VACIO C+3+F EXP TER REX VAR EXP TER REX CTE EXP TER REX VAR C + + 3 F vacío Esquema de traducción Expresión: PUSHA C LOAD PUSHC 3 PUSHA F LOAD ADD ADD

  13. ASG VAR = EXP ; EXP TER REX TER ( EXP ) | VAR | CTE VAR A | ... | Z CTE 0 | ... | 9 REX + EXP | - EXP | VACIO 3-2 EXP TER REX CTE EXP TER REX CTE NEG ADD REX 3 - 2 vacío Esquema de traducción Expresión: PUSHC 3 PUSHC 2 NEG ADD

  14. ASG VAR = EXP ; EXP TER REX TER ( EXP ) | VAR | CTE VAR A | ... | Z CTE 0 | ... | 9 REX + EXP | - EXP | VACIO A-(B-5) A-B-5 Esquema de traducción Expresión: Hacer el árbol de Análisis para estas dos expresiones. ¿CONCLUSIONES?

More Related