Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Justifique su respuesta
28 de agosto de 2018
Contenido
¿Qué es un Compilador? ............................................................................................................................... 4
Análisis y síntesis ........................................................................................................................................... 5
Etapa de análisis ................................................................................................................................ 5
Análisis léxico ................................................................................................................................ 5
Análisis sintáctico .......................................................................................................................... 5
Análisis semántico ......................................................................................................................... 5
Etapa de síntesis ................................................................................................................................ 5
Editores orientados al lenguaje ..................................................................................................... 6
Impresión con formato (“Pretty Printer”) ..................................................................................... 6
Comprobadores estáticos ............................................................................................................. 6
Intérpretes ..................................................................................................................................... 7
Fases de un compilador................................................................................................................................. 7
Ejemplo de análisis y síntesis ........................................................................................................................ 8
El contexto de un compilador ....................................................................................................................... 9
Preprocesador ................................................................................................................................. 10
Ensamblador.................................................................................................................................... 10
Enlazador ......................................................................................................................................... 10
Estructura de un Compilador ...................................................................................................................... 11
Tipos de compiladores ................................................................................................................................ 11
Compiladores cruzados ................................................................................................................... 11
Compiladores optimizadores .......................................................................................................... 11
Compiladores de una sola pasada ................................................................................................... 11
Compiladores de varias pasadas ..................................................................................................... 11
Compiladores JIT (just in time) ........................................................................................................ 11
Reconocimiento de lexemas y la tabla de símbolos.................................................................................... 13
Análisis sintáctico ........................................................................................................................................ 14
Interacción entre analizador léxico y sintáctico ...................................................................................... 15
Justificación: ................................................................................................................................................ 16
Referencias .................................................................................................................................................. 17
COMPILADORES 3
COMPILADORES 4
Compiladores
¿Qué es un Compilador?
fuente.
Nota:
lenguajes destino.
Los primeros compiladores aparecieron a primeros de los años 50, como resultado
proceso.
Análisis y síntesis
Etapa de análisis: Parte el programa fuente en sus piezas constituyentes y crea una
(“token”)
Análisis semántico: Se revisa el programa fuente para comprobar que las reglas
De las dos partes de la compilación, la síntesis es la que requiere las técnicas más
Fases de un compilador
Nota:
representación a otra. Las tres primeras fases forman la etapa de análisis, mientras las
de procedimientos), etc.
El contexto de un compilador
instrucciones ejecutables.
programa ejecutable.
COMPILADORES
11
Estructura de un Compilador
Tipos de compiladores
Esta taxonomía de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que
se adscriban a varias categorías:
Compiladores cruzados: generan código para un sistema distinto del que están funcionando.
Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia, pero
manteniendo la funcionalidad del programa original.
Compiladores de una sola pasada: generan el código máquina a partir de una única lectura
del código fuente.
Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de
poder producir el código máquina.
Compiladores JIT (just in time): forman parte de un intérprete y compilan partes del código
según se necesitan.
COMPILADORES
12
En las primeras épocas de la informática, los compiladores eran considerados un software de los más
complejos existentes.
Análisis léxico
Convierte una cadena de caracteres que conforma el programa fuente en un grupo de
Durante el análisis léxico el programa fuente, que está constituido por una cadena de
Estas palabras son identificadas y clasificadas en diferentes grupos. Por ejemplo, las
Los espacios en blanco que separan los caracteres que forman las palabras son
separadores como tabuladores, saltos de línea, etc. También se pueden eliminar en esta
Los errores detectados en la fase de análisis léxico suelen ser escasos, porque en esta fase
se dispone de muy poca información sobre el programa. Un error que sí se puede detectar
reconocimiento.
La tabla de símbolos asocia a cada identificador un número, así como una serie de
Nota:
Para distinguir unas palabras de otras durante el análisis léxico, se utilizan determinados
operadores, como “+”, “-”, “*”, “/”, son reconocidos como lexemas, y separan al resto de
los lexemas, que a su vez pueden ser palabras (nombres de variables) o números.
COMPILADORES
14
popular son las expresiones regulares, que veremos a continuación. En ocasiones, cuando
este caso, la representación del programa que produce el analizador léxico presenta
Análisis sintáctico
Agrupa las palabras del programa fuente en “frases” anidadas jerárquicamente con
un significado común.
lenguaje fuente.
herramientas automáticas.
Nota:
estructura sintáctica de los programas correctos. Las sintaxis de las construcciones de los
free grammars), también llamada notación BNF (Backus-Naur Form). Las gramáticas
ofrecen significativas ventajas tanto para los diseñadores del lenguaje como para los
escritores de compiladores:
COMPILADORES
15
detección de errores.
Como los lenguajes tienen una vida larga y pueden evolucionar añadiéndoseles
principal tarea es leer los caracteres de entrada y producir como salida una secuencia de
COMPILADORES
16
sintáctico.
En el caso de las herramientas lex y yacc, el analizador léxico suele ser una función
llamada YYLex, que retorna cada vez un dato del tipo Token diferente.
Ambos analizadores pueden compartir una tabla de símbolos, que sirve para traducir
Justificación:
Los compiladores para lenguajes de alto nivel tienen muchas fases, en las que progresivamente se
especiales y, por tanto, compiladores. Estos compiladores sencillos se pueden construir con
Referencias
https://www.ctr.unican.es/asignaturas/lan/compila-2en1.pdf