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.
Análisis Léxico
Análisis Sintáctico
Análisis Semántico
Generación y Optimización de
código intermedio
Generación de código objeto
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
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.
Area = base * altura / 2
Id1 = Id2 * Id3 / 2
ANALIZADOR
LÉXICO
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.
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
Expresión
Expresión Expresión
Expresión de asignación
Expresión
aditiva
Expresión
índice
ExpresiónExpresión Expresión Expresión
Id A Id i Numero 4 Numero 2
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
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.
 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.
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
 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.
Genera un código mejorado, ya no
estructurado, más fácil de traducir
directamente a código
ensamblador o máquina
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.

Compiladores

  • 2.
    Los compiladores sonprogramas 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.
  • 3.
    Análisis Léxico Análisis Sintáctico AnálisisSemántico Generación y Optimización de código intermedio Generación de código objeto
  • 4.
    Lee la secuenciade 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 lasecuencia 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 elementoestructural 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
  • 9.
    Expresión Expresión Expresión Expresión deasignación Expresión aditiva Expresión índice ExpresiónExpresión Expresión Expresión Id A Id i Numero 4 Numero 2
  • 10.
    Los árboles deaná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 comprobacionesnecesarias 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álisissemá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 Idi Numero 4 Numero 2 Tomando el mismo ejemplo: Tipo: entero Tipo: entero Tipo: entero Tipo: entero Tipo: entero Tipo: entero Constante Constante
  • 14.
     Facilitar elproceso 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ódigomejorado, ya no estructurado, más fácil de traducir directamente a código ensamblador o máquina
  • 16.
    Construye el programaobjeto, 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.