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ón Prototipo funcional y ampliable Lenguaje LC99 Visualización de la memoria en tiempo de ejecución Prototipo de Compilador Didáctico del lenguaje LC99
El Compilador/Intérprete Compilador de LC99 Intérprete del código objeto P Prototipo de Compilador Didáctico del lenguaje LC99
Prototipo de Compilador Didáctico del lenguaje LC99 Objetivos 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 Prototipo de Compilador Didáctico del lenguaje LC99
Prototipo de Compilador Didáctico del lenguaje LC99 Desarrollo 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 Prototipo de Compilador Didáctico del lenguaje LC99
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 Prototipo de Compilador Didáctico del lenguaje LC99
Estructura del conjunto compilador/intérprete Prototipo de Compilador Didáctico del lenguaje LC99
Características del lenguaje Anidamiento de subrutinas Recursividad Estructura de bloques Variables dimensionables dinamicamente Variables dinámicas Prototipo de Compilador Didáctico del lenguaje LC99
Restricciones 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)* Prototipo de Compilador Didáctico del lenguaje LC99
Restricciones del prototipo (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* Prototipo de Compilador Didáctico del lenguaje LC99
Diagramas sintácticos del subconjunto Prototipo de Compilador Didáctico del lenguaje LC99
Estructura del compilador Prototipo de Compilador Didáctico del lenguaje LC99
Prototipo de Compilador Didáctico del lenguaje LC99 Fases del proceso Análisis léxico Análisis sintáctico Análisis semántico Generación de código Prototipo de Compilador Didáctico del lenguaje LC99
Prototipo de Compilador Didáctico del lenguaje LC99 La tabla de símbolos Almacena elementos declarados Permanece tras la compilación Estructura de árbol de bloques Volcado en fichero Prototipo de Compilador Didáctico del lenguaje LC99
Tipos de registros de la tabla de símbolos Campos de los registros Partes variantes de los registros Enlaces de la estructura de árbol Tipos predefinidos Etiquetas Constantes Tipos definidos Variables Funciones y procedimientos Ristras Vectores y matriz Punteros Enumerados Prototipo de Compilador Didáctico del lenguaje LC99
Prototipo de Compilador Didáctico del lenguaje LC99 La 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” Prototipo de Compilador Didáctico del lenguaje LC99
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 Prototipo de Compilador Didáctico del lenguaje LC99
Prototipo de Compilador Didáctico del lenguaje LC99 El 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 Prototipo de Compilador Didáctico del lenguaje LC99
El intérprete de código P Comprobaciones y correcciones Modificaciones Prototipo de Compilador Didáctico del lenguaje LC99
Prototipo de Compilador Didáctico del lenguaje LC99 Visualizació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 Prototipo de Compilador Didáctico del lenguaje LC99
Prototipo de Compilador Didáctico del lenguaje LC99 Conclusiones 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 Intérprete Prototipo de Compilador Didáctico del lenguaje LC99
Prototipo de Compilador Didáctico del lenguaje LC99