- Software de desarrollo excede el costo del hardware - La programacin se realiza en ensamblador - Programacin en forma de interpretadores. - Cdigo veloz. - Se ejecutan de 10 a20 veces ms rpido que el ensamblador. - John Backus: Un programa que traduzca expresiones de alto nivel en un cdigo nativo. - 1954 1957 Proyecto dFORTRAN I - Surge el Primer compilador - Compiladores modernos conservan sus lneas bsicas
Compiladores, Intrpretes y Programas similares
- Qu es un compilador?
Es un programa que traduce un programa escrito en un lenguaje fuente (alto nivel ) a un programa objeto escrito en lenguaje de bajo nivel (de mquina).
Lenguaje Fuente Compilador Lenguaje Objeto
Mensajes de error
- Qu es un Interpretador?
Es un programa que tiene por entrada un programa escrito en lenguaje fuente (Alto nivel) y como salida ejecuta las acciones indicadas por el lenguaje fuente.
- Traductor
Recibe una entrada en un lenguaje y produce una salida en otro lenguaje.
- Programas similares
- Preprocesadores (Ej.: 4GLs, UILs) - Extensiones a lenguajes. (Ej.: Lenguajes embebidos ESQL/C, Graficacin, etc..) - Convertidores de cdigo. (Traductores de lenguajes, Generadores de cdigo).
- Aplicaciones que utilizan tcnicas de compiladores. - Editores de texto - Formateadores de texto - Reconocimiento de patrones.
FASES DE UN COMPILADOR
- Relacin entre fases: - Cada frase toma una representacin y entrega otra relacionada en forma lgica.
- Por que en frases? - Por que se requieren por la necesidad de facilitar, verificar, optimizar y ejecutar con eficiencia.
Anlisis Lexicogrfico Anlisis Sinttico Anlisis Semntico Generacin de cdigo Intermedio Optimizacin de Cdigo Generacin de Cdigo Lenguaje Fuente Muestras Arbol de anlisis Arbol Modificad o Cdigo Intermedi o Cdigo Intermedi o Programa Objeto
Tablas de Informacin
Manejador de Errores Anlisis Sntesis ANALISIS LEXICOGRAFICO
- El primer paso para comprender una oracin es el reconocimiento de palabras - Son la unidad ms pequea despus de las letras.
- El entender palabras no es una labor trivial Esta es una oracin. Taes anu cionaro.
- La letra mayscula inicia la oracin - El espacio en blanco es un separador. - El punto indica la terminacin de la oracin.
- Explora en forma secuencial el programa fuente y lo separa los caracteres en grupos para obtener los elementos bsicos o muestras (Tokens):
- Palabras clave: DO, WHILE, IF, integer, etc. - Identificadores: total, id, x40, prentj, etc. - Smbolos Operadores: +,-,*,/,=,etc. - Representacin grfica: Iconos, Figuras, etc.
- Salida:
- Cadena de muestras que pueden asociarse con smbolos utilizados por el Anlisis sintctico. - Informacin para la tabla de smbolos.
ANALISIS SINTACTICO
- Una vez que las palabras son comprendidas el segundo paso es entender la estructura de la oracin. Esta materia es una gran clase
- Verifica que las muestras obtenidas por el Analizador lxico se encuentren dentro de la estructura sintctica del lenguaje.
- Identifica ciertas clases sintcticas definidas por la gramtica del lenguaje y produce un rbol donde las clases son los nodos y las muestras las hojas.
- El rbol de anlisis sintctico se usa en etapas subsecuentes. - Entendida la estructura de la oracin, el tercer paso es comprender el significado. - Verifica el significado de la oracin con respecto a las reglas semnticas del lenguaje. - Realiza una verificacin esttica del programa y genera una representacin intermedia. - Produce otro rbol y le aade significado.
Esta Materia es una gran clase adjetivo sustantivo verbo artculo adjetivo sustantivo predicado sujeto oracin declaracin expresin identificador = expresin identificador identificador C A B + ANLISIS SEMNTICO - Los lenguajes de programacin definen reglas estrictas para evitar ambigedades. - Ejemplo: o Si A y B son de tipo real, entonces C debe ser de tipo real, o si el lenguaje lo permite se truncarn los decimales.
GENERADOR DE CDIGO INTERMEDIO - Utiliza la estructura generada por etapas anteriores para generar estructuras mas simples. - Debe ser fcil de producir y fcil de traducir. - Muchos compiladores ejecutan mas de una traduccin intermedia. - El lenguaje intermedio es usado porque hace disponible caractersticas ocultas para los niveles de alto nivel. - La representacin mas popular es el cdigo de tres direcciones.
OPTIMIZADOR DE CDIGO - Mejora el cdigo intermedio. - Produce otro programa que realiza la misma funcin pero que permita: o Generar programas ms rpidos. o Usar menos memoria. - Algunos de los mtodos ms conocidos son: o Doblado de constantes. o Reconocimiento de subexpresiones iguales. o Optimizacin de ciclos.
GENERACIN DE CDIGO - Fase final del compilador. - Produce el cdigo objeto (ensamblador generalmente). - Asignacin de memoria por dato. - Referencias a bibliotecas. - Asigna variables a registros.
TABLAS DE INFORMACIN - Tablas de smbolos. - Tablas de anlisis sintctico. - Instrucciones del significado de muestras. - Referencias a variables, tipos, procedimientos, funciones, etc. - Tabla de representacin intermedia (temporales). - Tabla de literales. - Tabla de ciclos iterativos.
MANEJADOR DE ERRORES - Deteccin y reportes de errores. - Debe permitir continuar el anlisis a la siguiente fase. - En las primeras fases (lxico y sintctico) se detecta la mayor cantidad de errores.
II.1. Lenguajes. II.2. Gramtica. II.3. Derivaciones y rboles. II.4. Ambigedad. II.5. Clasificacin de gramticas.
LENGUAJES - Conjunto de oraciones con estructura bien definida. - Un metalenguaje es un lenguaje que sirve para definir otros lenguajes y se utiliza para definir las reglas que definen un lenguaje. o Ejemplo: verbo, predicado, sujeto, etc. son partes del metalenguaje del lenguaje espaol.
ELEMENTOS DE UN LENGUAJE - Alfabeto: o Un alfabeto T es un conjunto, finito de smbolos. o Smbolos terminales del lenguaje. o T * se designa para todas las posibles concatenaciones de los componentes de un alfabeto. o Por lo tanto un lenguaje L c T *
o Ejemplo: cdigo de mquina basado en el alfabeto binario (0 ,1). - Cadena: o Secuencia finita de elementos del alfabeto. o |x| longitud de la cadena x. o Ejemplo: la cadena w=01010 y |01010|=5 o |e|=0 cadena vaca. o xy concatenacin de las cadenas x y y. o Ejemplo: x=01, y=11, xy=0111; xe=ex=x. - Smbolos No-Terminales: o Conjunto N de smbolos que no estn en T. o Representan clases sintcticas o estructuras sintcticas. o Smbolos que forman parte del metalenguaje. o NT=C - Vocabulario: o V=NT o V * conjunto de todas las cadenas en V. - Produccin: o Regla para la sustitucin de cadenas por la clase sintctica que representan. o Tiene la forma o| donde: o es un smbolo No-Terminal y | es una cadena de smbolos. Significa se define como.