Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de...

22
Prototipo de Prototipo de compilador didáctico compilador didáctico del lenguaje LC99 del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Transcript of Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de...

Page 1: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de compilador Prototipo de compilador didáctico del lenguaje LC99didáctico del lenguaje LC99

Orlando Sánchez Montesdeoca

Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Page 2: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

IntroducciónIntroducción

Prototipo funcional y ampliableLenguaje LC99Visualización de la memoria en

tiempo de ejecución

Page 3: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

El Compilador/IntérpreteEl Compilador/Intérprete

Compilador de LC99 Intérprete del código objeto P

Compilador Intérpretefichero fuente

en LC99ejecución, trazado y visualización

fichero objeto en código P

fichero de la tabla de símbolos

Page 4: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

ObjetivosObjetivos

Proyecto global– Didáctica de la gestión de memoria en tiempo de ejecución

Prototipo– Producto completo y funcional– Demostrar la viabilidad del proyecto global– Comprobar su utilidad y aceptación– Base para su ampliación

Page 5: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

DesarrolloDesarrollo– Especificación del lenguaje LC99– Estudio y especificación del código P– Análisis léxico– Análisis sintáctico– Tabla de símbolos– Análisis semántico– Generación de código– Adaptación del intérprete– Visualización de la memoria– Pruebas– Documentación

Page 6: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

Visión general del compilador/intérprete– Estructura del conjunto compilador/intérprete– Características del lenguaje LC99– El compilador de LC99– La tabla de símbolos

La máquina P El intérprete de código P

Page 7: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

Estructura del conjunto compilador/intérpreteEstructura del conjunto compilador/intérprete

fichero fuente en LC99

fichero objeto en código P

fichero de la tabla de símbolos

ejecución, trazado y visualización

analizador léxico

analizador sintáctico

analizador semántico

gestión de la tabla de símbolos

intérpreteensambladorsistema de

visualización de la memoria

generador de código

Flujo de información

proceso de compilación

Compilador

Intérprete

Page 8: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

Características del lenguajeCaracterísticas del lenguaje

Anidamiento de subrutinas Recursividad Estructura de bloques Variables dimensionables dinamicamente Variables dinámicas

Page 9: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

Restricciones del prototipoRestricciones del prototipo

1.- Recursividad 2.- Anidamiento de procedimientos 3.- Estructura de bloques 4.- Entrada/Salida 5.- Matrices dimensionables dinámicamente* 6.- Variables dinámicas (Memoria dinámica)*

Page 10: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

Restricciones del prototipo Restricciones del prototipo (continuación)(continuación) 7.- Otras características:

– Tipos de datos elementales– Tipos de datos estructurados*– Procedimientos y funciones:

• Paso de parámetros (por valor y referencia)• Paso de etiquetas, procedimientos y funciones*

– Instrucciones:• Bucles (if, while, repeat, for)• Saltos (goto (local), return, menos exit, halt y continue*)• Asignación• Llamadas a procedimientos y funciones• New/dispose*

– Expresiones– Acceso estructurado*

Page 11: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

Diagramas sintácticos del subconjuntoDiagramas sintácticos del subconjunto

Page 12: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

Estructura del compiladorEstructura del compilador

Analizador Léxico

Analizador Sintáctico

Analizador Semántico

Generación de Código

siguiente símbolo

petición de siguiente símbolocaracteres del

fichero fuente

errores léxicos

errores sintácticos

errores semánticos

fichero de la tabla de símbolos

Tabla de Símbolos

fichero del código objeto

inserción de símbolos

comprobaciones

Page 13: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

Fases del procesoFases del proceso

Análisis léxico

Análisis sintáctico

Análisis semántico

Generación de código

Page 14: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

La tabla de símbolosLa tabla de símbolos

Almacena elementos declarados

Permanece tras la compilación

Estructura de árbol de bloques

Volcado en fichero

Page 15: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

Tipos de registros de la tabla de símbolosTipos de registros de la tabla de símbolos

• Tipos predefinidos• Etiquetas• Constantes• Tipos definidos• Variables• Funciones y

procedimientos• Ristras• Vectores y matriz• Punteros• Enumerados

• Registros• Campos de los

registros• Partes variantes de

los registros• Enlaces de la

estructura de árbol

Page 16: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

La máquina virtual PLa máquina virtual P

Registros:– PC, SP, MP, NP, EP

Organización de la memoria:– Enlace estático y dinámico– Pila de “marcos de pila”

heap

marco de pila

marco de pila del programa principal

SP

0

marco de pila

espacio libre

constantes

EP

Page 17: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

La máquina virtual P (continuación)La máquina virtual P (continuación)

Áreas de datos (marcos de pila)– Parámetros implícitos– Parámetros de subrutina– Área de variables locales– Pila local

Page 18: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

El código PEl código P Lenguaje ensamblador de la máquina P Elementos:

– Mnemotécnicos con identificador de tipo y uno o dos parámetros– Etiquetas

Grupos de instrucciones:• Aritméticas• Lógicas• Carga y direccionamiento• Almacenamiento• Saltos• Procedimientos estándar• Subrutinas y control de ejecución

Page 19: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

El intérprete de código PEl intérprete de código P

P4

Comprobaciones y correcciones

Modificaciones

Page 20: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

VisualizaciónVisualización

Volcado de la memoria– Registros de la máquina P– Posiciones de memoria de la pila de marcos

Instrucción BRK

Modo de traza

Page 21: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99

ConclusionesConclusiones Utilidad

– Herramienta didáctica

– Demuestra la viabilidad del proyecto global

– Base para la terminación del proyecto

– Desarrollo aplicable a la didáctica de la asignatura Mejoras

– Lenguaje

– Compilador Ampliación

– Lenguaje

– Compilador

– Intérprete

Page 22: Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de carrera de la E.U.I. - U.L.P.G.C.

Prototipo de Compilador Didáctico del lenguaje LC99