Los compiladores son programas que traducen un lenguaje de programación a otro. Toman un programa escrito en un lenguaje fuente y lo convierten en un programa equivalente en un lenguaje objeto. En el proceso de traducción, realizan análisis léxico, sintáctico, semántico y generan código intermedio y objeto, verificando errores en el lenguaje fuente.
2. Los compiladores son programas de
computadora que traducen de un
lenguaje a otro.
Un compilador toma como su entrada
un programa escrito en lenguaje
fuente y produce un programa
equivalente escrito en lenguaje
objeto.
A lo largo del proceso de traducción el
compilador debe informar la presencia de errores
en el lenguaje fuente.
4. Lee la secuencia de caracteres de
izquierda a derecha del Programa
fuente y agrupa las secuencias de
caracteres en unidades con
significado propio.
Palabras clave
Identificadores
Operadores
Constantes numéricas
Signos de puntuación
Separadores de
sentencias, llaves,
paréntesis, etc.
Componentes léxicos o
“tokens” en ingles
5. Ejemplo:
A[i] = 4 + 2;
A identificador
[ corchete de apertura
i Identificador
] corchete de cierre
= operador de asignación
4 numero
+ operador suma
2 numero
; punto y coma
Se realiza un análisis símbolo a símbolo indicando el tóken
para cada una de las cadenas reconocidas o un error en caso
de no reconocer la cadena.
6. Area = base * altura / 2
Id1 = Id2 * Id3 / 2
ANALIZADOR
LÉXICO
7. Determina si la secuencia de
componentes léxicos sigue la sintaxis
del lenguaje y obtiene la estructura
jerárquica del programa en forma de
árbol, donde los nodos son las
construcciones de alto nivel del
lenguaje.
Se determinan las relaciones estructurales entre
los componentes léxicos.
8. Representa un elemento estructural
denominado expresión, la cual es una
expresión de asignación compuesta de
una expresión de subíndice a la izquierda
y una expresión aritmética a la derecha.
De ejemplo
anterior:
A[i] = 4 + 2;
EXPRESIÓN DE SUBÍNDICE EXPRESIÓN ARITMÉTICA
ÁRBOL DE ANÁLISIS GRAMATICAL
10. Los árboles de análisis gramatical son útiles para
visualizar la sintaxis de un programa pero no es
eficaz en la representación de esa estructura. Los
analizadores sintácticos tienden a generar un
árbol sintáctico
Una simplificación de la
información contenida en
un árbol de análisis
gramatical.
Id A Id i Numero 4 Numero 2
11. Realiza las comprobaciones necesarias
sobre el árbol sintáctico para determinar el
correcto significado del programa.
La verificación e inferencia de tipos en asignaciones y
expresiones.
La declaración del tipo de variables y funciones antes
de su uso
El correcto uso de operadores
El ámbito de las variables
La correcta llamada a funciones.
12. En análisis semántico es necesario hacer
uso de la Tabla de símbolos, como
estructura de datos para almacenar
información sobre los identificadores que
van surgiendo a lo largo del programa.
El analizador semántico registrara el árbol
sintáctico con los tipos de datos de las
expresiones y verificara que la asignación
tiene sentido para los tipos, en caso
contrario mandara un mensaje de error en
correspondencia de tipos.
13. Id A Id i
Numero 4 Numero 2
Tomando el
mismo ejemplo:
Tipo: entero
Tipo: entero Tipo: entero
Tipo: entero
Tipo: entero Tipo: entero
Constante Constante
14. Facilitar el proceso de optimización.
Facilitar la traducción al lenguaje de la máquina.
Compatibilización (el análisis será independiente de
la computadora física).
Se traduce el programa
fuente a otro lenguaje más
sencillo.
15. Genera un código mejorado, ya no
estructurado, más fácil de traducir
directamente a código
ensamblador o máquina
16. Construye el programa objeto,
esto es, se genera el código en
ensamblador, propio de la
plataforma en la que se ejecutará
el programa. La tabla de
símbolos contendrá
normalmente información
detallada sobre la memoria
utilizada por las variables.