Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de...
-
Upload
trinidad-elias -
Category
Documents
-
view
3 -
download
0
Transcript of Prototipo de compilador didáctico del lenguaje LC99 Orlando Sánchez Montesdeoca Proyecto fin de...
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.
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
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
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
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
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é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
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
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)*
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*
Prototipo de Compilador Didáctico del lenguaje LC99
Diagramas sintácticos del subconjuntoDiagramas sintácticos del subconjunto
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
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
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
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
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
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
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
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
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
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
Prototipo de Compilador Didáctico del lenguaje LC99