La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Ejemplo Práctico de un Compilador Pequeño Lenguaje Fuente Análisis Léxico Análisis Sintáctico Generador de Código Objeto Lenguaje Objeto Características:

Presentaciones similares


Presentación del tema: "Ejemplo Práctico de un Compilador Pequeño Lenguaje Fuente Análisis Léxico Análisis Sintáctico Generador de Código Objeto Lenguaje Objeto Características:"— Transcripción de la presentación:

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

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

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

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

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

6 Implementación Análisis Sintáctico 1 Subrutina para cada símbolo No Terminal Análisis Léxico Lee secuencias de caracteres de los símbolos terminales de la Gramática Todos los símbolos terminales están formados por 1 carácter Cuando no sea un blanco, será el próximo carácter Consideración: Convenio para conocer qué subrutina del análisis sintáctico llama al léxico y en qué punto 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

7 Lenguaje Máquina Objeto Lenguaje tipo ensamblador que pertenece a una hipotética máquina de pila PUSHC Coloca en la cima de la pila la cte dada top:= top+1; pila[top]:=cte PUSHA Coloca en la cima de la pila la dirección de la variable dada top:= top+1; pila[top]:=dir.var. LOAD 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 pila[top]:=mem[pila[top]] STORE 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. mem[pila[top-1]]:=pila[top] top:=top-2

8 Lenguaje Máquina Objeto NEG Cambia el signo del valor situado en la cima de la pila pila[top]:= - pila[top] ADD 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 Reservamos una zona de memoria para almacenar todas las variables pila programa variables

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

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

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

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

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

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


Descargar ppt "Ejemplo Práctico de un Compilador Pequeño Lenguaje Fuente Análisis Léxico Análisis Sintáctico Generador de Código Objeto Lenguaje Objeto Características:"

Presentaciones similares


Anuncios Google