Anda di halaman 1dari 3

TEORIA DE COMPILADORES

Las Gramticas tipo 0 y 1 muestran un buen nmero de propiedades indecidibles. En


las primeras, por ejemplo, puede suceder que no se pueda determinar
algortmicamente si una cadena dada es producto de ella o no; es decir, no se podra
saber si una Maquina de Turing diseada para reconocer esas cadenas se detendr o
no durante el transcurso de esa computacin.

La Teora de la Computabilidad facilita descubrir propiedades de los Lenguajes y sus
reconocedores, y ha permitido el diseo de los Lenguajes de programacin y de sus
correspondientes Autmatas encargados de reconocerlos y traducirlos a expresiones
ms simples: los analizadores de los compiladores.

La Gramtica que describe la sintaxis de los Lenguajes de programacin es Libre de
Contexto. As mismo, el analizador lexicogrfico de un compilador es un Autmata
Finito, porque la Gramtica que se emplea en la definicin lxica de un Lenguaje
como C, C#, Java, o Fortran es Regular.
Se puede disear una Gramtica de ese tipo que mostrara como se pueden obtener
los nombres de los componentes lxicos para alguno de esos Lenguajes, con
excepcin de las palabras reservadas.

























TOKEN O COMPONENTE LEXICO: Cualquiera de los smbolos terminales que se
manejan en la construccin de sentencias de un programa en un Lenguaje de alto
nivel. Se define como un par ordenado:

Token = (Tipo, Valor ).












CASO DE ESTUDIO

Anlisis de la lnea de cdigo que forma parte de un programa, expresada como
tiempo =minutos +segundos / 60,

ANALIZADOR LEXICO
Funcin: Comprobar la correcta construccin de cada uno de los tokens. A ciertos
componentes lxicos, como los identificadores, se les introduce en la tabla de
smbolos.
Errores tpicos: Identificadores mal estructurados: 4AC, aga@quantum, yo.tu,
posicin, etc.
Constantes mal estructuradas: +-4.6789, 6900-, 90+25, etc.
Operadores mal estructurados: := , =>, <>, etc. // todos ellos en C
Palabras reservadas mal estructuradas: PRINTF, print, suitch, etc.


ANALIZADOR SINTACTICO
Funcin: Comprobar el correcto acomodo de los tokens dentro del cdigo. En esta
etapa se genera el rbol sintctico de la expresin.
Errores tpicos:
Parntesis mal anidados: ( ( ) ( ( ) , ( ) ) ( ( ) ), ( ) ( ( ) ) ) ( ( ), etc.
Expresiones incorrectas, tales como: a + b = c, a + b * - c , etc.

ANALIZADOR SEMANTICO
Funcin: Evala el programa fuente para tratar de encontrar errores en los tipos de
datos que se emplean y rene informacin sobre los mismos. Si fuera necesario, hace
un ajuste, siempre que no afecte al algoritmo en sus resultados.
Errores tpicos:
Los indicados con el mensaje Type mismatch.
Cuando se usa una variable real como argumento de un for, o como subndice de una
matriz.
Si se suman matrices bidimensionales con vectores que son unidimensionales.
Si en la instruccin alternativa mltiple (como switch) un mismo valor de la constante
corresponde a dos rangos diferentes.

GENERADOR DE CODIGO INTERMEDIO
Funcin: Algunos compiladores producen una representacin intermedia explicita del
programa fuente que se puede considerar como un programa para una maquina
abstracta. Se propone como Lenguaje el llamado cdigo de tres direcciones, en el que
cada instruccin tiene como mximo tres operandos (considerando inclusive la
asignacin).
temp1 := enteroareal(60)
temp2 := id3 / temp1
temp3 := id2 + temp2
id1 := temp3

OPTIMIZADOR DE CODIGO
Funcin: Sirve para mejorar el cdigo intermedio, para obtener un cdigo de maquina
ms rpido de ejecutar. Por la variacin en la magnitud de la optimizacin en distintos
compiladores, algunas optimizaciones resultan triviales.
En el siguiente ejemplo se compara como se tienen dos lneas de cdigo, antes y
despus de la optimizacin. En el segundo se ahorra una operacin de multiplicacin:
















GENERADOR DE CODIGO
Funcin: Produce el cdigo objeto, que consiste en cdigo relocalizable o
ensamblador. Las posiciones de memoria se seleccionan para cada una de las
variables usadas por el programa; despus, cada una de las instrucciones intermedias
se traduce a una secuencia de instrucciones de mquina que ejecuta la misma tarea.

Anda mungkin juga menyukai