Estudiante

Páginas: 112 (27950 palabras) Publicado: 20 de junio de 2013









CSC (C# Compiler)

Ejercicio de Implementación


Compiladores
Entrega Final

Curso 2003 - 2004







Septiembre del 2004

Grupo 98
Santiago González Tortosa
sgt_fi@yahoo.es
Germán Ramos García
g990189@zipi.fi.upm.es
Alberto Fernández Recio
afr@iespana.es



ÍNDICE

1 Introducción 4
2 Analizador Léxico 6
2.1 Gramática del Analizador Léxico 6
2.2Diseño del Analizador Léxico 8
2.2.1 Autómata 8
2.2.2 Flex 10
3 Tabla de Símbolos 13
3.1 Diseño 13
3.2 Implementación 14
3.3 Ejemplo 16
4 Analizador Sintáctico 18
4.1 Gramática 19
4.2 Implementación 22
5 Analizador Semántico 23
5.1 Comprobación de Tipos 23
5.2 Otras Reglas Semánticas 26
6 Generador de Código Intermedio 28
6.1 El modulo “tercetos” 28
6.2 El módulo “Intermedio” 33
7Generador de Código Final 38
8 Generador de Errores 46
9 Programa Principal 49
10 Pruebas 50
10.1 Prueba 1 50
10.2 Prueba 2 61
10.3 Prueba 3 66
10.4 Prueba 4 73
10.5 Prueba 5 82
10.6 Prueba 6 91
10.7 Prueba 7 105
10.8 Prueba 8 120
10.9 Prueba 9 141
10.10 Prueba 10 150
10.11 Prueba 11 154
10.12 Prueba 12 163
10.13 Prueba 13 172
10.14 Prueba 14 183
10.15 Prueba 15 186
10.16Prueba 16 254
10.17 Prueba 17 262
10.18 Prueba 18 267
10.19 Prueba 19 268
10.20 Prueba 20 269
10.21 Prueba 21 270
10.22 Prueba 22 271
10.23 Prueba 23 272
10.24 Prueba 24 273
10.25 Prueba 25 274
11 Anexo 276
12 Bibliografía 277

1 Introducción

Una compilación es una simple traducción que convierte un programa escrito en un lenguaje, llamado fuente, a un programa equivalente en otrolenguaje, llamado objeto. Las técnicas para compilar son independientes del lenguaje fuente y objeto, es decir, siempre es la misma.

El compilador se divide en las siguientes fases:

Analizador Léxico (AL): Lee todos los caracteres del fichero fuente y crea los tokens oportunos, para pasárselos al analizador sintáctico.

Analizador Sintáctico (AS): Verifica la sintaxis del programa fuenteutilizando los tokens. Crea un árbol sintáctico y se lo pasa al analizador semántico.

Analizador Semántico (ASE): Revisa la semántica del programa, a partir de un árbol sintáctico. Crea un árbol sintáctico anotado y se lo pasa al generador de código intermedio.

Generador de código intermedio (GCI): Crea código intermedio, a partir del árbol sintáctico anotado, utilizando el lenguaje intermedio(ensamblador en este caso).

Optimizador del código (OC): Toma el código intermedio y lo optimiza. Pasa al generador de código final dicho código intermedio optimizado.

Generador de código final (GCF): A partir del código intermedio optimizado, crea el código objeto final y lo inserta en el fichero objeto.

Junto con estas fases, debemos incluir el tratamiento de errores (gestor de errores) yla tabla de símbolos.

Gestor de errores (GE): Captura y envía por pantalla todos los errores detectados en cada una de las fases anteriores.

Tabla de símbolos (TS): Almacena todas las palabras reservadas e identificadores (variables, funciones, etc.), sus atributos. También da información a cualquiera de las fases que lo pida.


Resumiendo, un esquema de compilador puede ser el siguiente:En nuestro caso tendremos todos estos pasos exceptuando el Optimizador de Código, es decir, pasamos de código intermedio (GCI) a código objeto final (GCF). A continuación veremos cada uno de ellos.

Debemos resaltar que, después de dos anteriores entregas en el curso, en los que hemos estado utilizando distintas alternativas de programación, hemos decidido utilizar para esta últimaentrega, el programa FLEX para el analizador léxico y ninguna herramienta para el analizador sintáctico y semántico.

Por otro lado, inicialmente pensamos en realizar el compilador diseñándolo orientado a objetos. Sin embargo, debido a problemas con FLEX y C++, hemos optado por realizar todo el compilador utilizando un diseño estructurado.

2 Analizador Léxico

En primer lugar, y antes de...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Estudiante
  • Estudiante
  • Estudiante
  • Estudiante
  • El estudiante
  • Estudiante
  • Estudiante
  • Estudiante

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS