Professional Documents
Culture Documents
ANLISIS
LEXICOGRAFICO
TEORAS DE LENGUAJES Y
COMPILADORES
INGENIERA INFORMTICA Y DE SISTEMAS
INTEGRANTES:
CHAVARRIA URBANO NINIDIO JUAN
YEN JESS OSORIO PICON
LUIS RICARDO PINEDO LONZOY
UNIVESIDAD SAN PEDRO FILIAL BARRANCA
ANLISIS LEXICOGRAFICO
DEDICATORIA
INTRODUCCIN
En 1946 se desarroll el primer ordenador digital. En un principio, estas
mquinas ejecutaban instrucciones consistentes en cdigos numricos que
sealan a los circuitos de la mquina los estados correspondientes a cada
operacin. Esta expresin mediante cdigos numricos se llam Lenguaje
Mquina, interpretado por un secuenciador cableado o por un microprograma.
Pero los cdigos numricos de las mquinas son engorrosos. Pronto los
primeros usuarios de estos ordenadores descubrieron la ventaja de escribir sus
programas mediante claves ms fciles de recordar que esos cdigos
numricos; al final, todas esas claves juntas se traducan manualmente a
Lenguaje Mquina. Estas claves constituyen los llamados lenguajes
ensambladores, que se generalizaron en cuanto se dio el paso decisivo de hacer
que las propias mquinas realizaran el proceso mecnico de la traduccin. A
este trabajo se le llama ensamblar el programa.
introdujo en 1957 para el uso de la computadora IBM modelo 704. Permita una
programacin ms cmoda y breve que lo existente hasta ese momento, lo que
supona un considerable ahorro de trabajo. Surgi as por primera vez el
concepto de un traductor, como un programa que traduca un lenguaje a otro
lenguaje.
NDICE
DEDICATORIA ................................................................................................................... 1
INTRODUCCIN ................................................................................................................ 2
COMPILADORES ............................................................................................................... 6
CLASIFICACIN DE COMPILADORES ......................................................................... 8
FUNCIONES DE UN COMPILADOR .............................................................................. 9
FASE DE ANLISIS ........................................................................................................ 11
FASE DE SNTESIS ........................................................................................................ 12
ANLISIS LXICO .......................................................................................................... 13
SINTAXIS ANLISIS ....................................................................................................... 13
ANLISIS SEMNTICO ................................................................................................. 13
GENERACIN DE CDIGO INTERMEDIO ................................................................ 13
GENERACIN DE CDIGO .......................................................................................... 14
TABLA DE SMBOLOS .................................................................................................. 14
Preprocesador ................................................................................................................... 14
Intrprete ............................................................................................................................ 14
Ensamblador ..................................................................................................................... 15
Vinculador .......................................................................................................................... 15
Pala cargadora .................................................................................................................. 15
Compilador cruzado ......................................................................................................... 15
Fuente de compilador de cdigo .................................................................................... 15
ANLISIS LXICO .......................................................................................................... 16
FICHAS .............................................................................................................................. 16
LAS ESPECIFICACIONES DE TOKENS .................................................................... 17
Smbolos especiales ...................................................................................................... 17
Idioma ................................................................................................................................ 17
REGLA DE COINCIDENCIA MS LARGA ................................................................. 17
Operaciones ..................................................................................................................... 19
Anotaciones ..................................................................................................................... 19
Precedencia y asociatividad ............................................................................................... 19
AUTMATAS FINITOS ................................................................................................... 20
COMPILADORES
se ejecuta n veces.
El compilador tiene una visin global del programa, por lo que la informacin
de mensajes de error es mas detallada.
CLASIFICACIN DE COMPILADORES
El programa compilador traduce las instrucciones en un lenguaje de alto
nivel a instrucciones que la computadora puede interpretar y ejecutar. Para
cada lenguaje de programacin se requiere un compilador separado. El
compilador traduce todo el programa antes de ejecutarlo. Los compiladores
son, pues, programas de traduccin insertados en la memoria por el sistema
operativo para convertir programas de cmputo en pulsaciones electrnicas
ejecutables (lenguaje de mquina). Los compiladores pueden ser de:
FUNCIONES DE UN COMPILADOR
A grandes rasgos un compilador es un programa que lee un programa
escrito es un lenguaje, el lenguaje fuente, y lo traduce a un programa
equivalente en otro lenguaje, el lenguaje objeto. Como parte importante de
este proceso de traduccin, el compilador informa a su usuario de la
presencia de errores en el programa fuente.
FASE DE ANLISIS
Conocido como el extremo frontal del compilador, el anlisis fase del compilador
lee el programa fuente, lo divide en partes fundamentales y, a continuacin,
verifica la existencia de lxico, gramtica y errores de sintaxis. La fase de anlisis
genera una representacin intermedia del programa fuente y tabla de smbolos,
que deberan ser alimentados a la fase de sntesis como entrada.
FASE DE SNTESIS
ANLISIS LXICO
La primera fase de escner funciona como un texto escner. Esta fase busca en
el cdigo fuente como una secuencia de caracteres y la convierte en un lexema
resultante.
Analizador Lxico representa estos lexemas resultantes en forma de fichas:
<token-name, attribute-value>
SINTAXIS ANLISIS
ANLISIS SEMNTICO
Anlisis semntico comprueba si el anlisis rbol construido sigue las reglas del
idioma. Por ejemplo, la asignacin de valores es entre tipos de datos
compatibles, y aadiendo cadena en un nmero entero. Adems, el analizador
semntico realiza un seguimiento de los identificadores, sus tipos y
expresiones; si los identificadores se declaran antes de su uso, o no, etc. El
analizador semntico produce un rbol de sintaxis anotado como una salida.
OPTIMIZACIN DE CDIGO
GENERACIN DE CDIGO
En esta fase, el generador de cdigo optimizado la representacin del cdigo
intermedio y la asigna a la mquina de destino. El generador de cdigo se
traduce el cdigo intermedio en una secuencia de (generalmente) reubicables
cdigo mquina. Secuencia de instrucciones de cdigo mquina realiza la tarea
como el cdigo intermedio.
TABLA DE SMBOLOS
Es una estructura de datos mantendr en todas las fases de un compilador.
Todos los nombres de identificador junto con sus tipos se almacenan aqu. La
tabla de smbolos hace que sea ms fcil para que el compilador pueda buscar
con rapidez el registro de cdigo y recuperarla. La tabla de smbolos se utiliza
tambin para el campo.
Preprocesador
UN preprocesador, que generalmente se considera como una parte del
compilador, es una herramienta que produce entradas para compiladores. Se
trata de macro-transformacin, ampliacin, inclusin de archivos, extensin del
lenguaje, etc.
Intrprete
Un intrprete, como un compilador, se traduce lenguaje de alto nivel a bajo nivel
de lenguaje mquina. La diferencia radica en la manera en que leen el cdigo
fuente o a la entrada. Un compilador lee todo el cdigo fuente a la vez, crea los
tokens, cheques semntica, genera cdigo intermedio, ejecuta el programa en
su totalidad y puede implicar muchos pases. Por el contrario, un intrprete lee
en un comunicado desde la entrada, se convierte en un cdigo intermedio,
ejecuta, luego toma la siguiente declaracin en secuencia. Si se produce un
error, un intrprete se detiene la ejecucin y de los informes que, mientras que
un compilador lee todo el programa, incluso si se encuentra con varios errores.
Ensamblador
Un ensamblador traduce los programas en lenguaje ensamblador a cdigo
mquina.La salida de un ensamblador se denomina un archivo objeto que
contiene una combinacin de instrucciones de mquina, as como los datos
necesarios para realizar estas instrucciones en la memoria.
Vinculador
Linker es un programa de ordenador que los enlaces y combina varios archivos
objeto junto con el fin de hacer un archivo ejecutable. Todos estos archivos
podran haber sido compilados por separado los ensambladores. La tarea
principal de un linker es buscar y localizar/rutinas mdulo al que se hace
referencia en el programa y para determinar la ubicacin de la memoria en estos
cdigos se ha cargado, con lo que el programa de instruccin referencias
absolutas.
Pala cargadora
Loader es una parte del sistema operativo y es el responsable de cargar
archivos ejecutables en la memoria y las ejecutan. Calcula el tamao de un
programa (instrucciones y datos) y crea espacio de memoria. Inicializa distintos
registros para iniciar ejecucin.
Compilador cruzado
Un compilador que se ejecuta en la plataforma (A) y es capaz de generar cdigo
ejecutable de la plataforma (B) se llama un compilador cruzado.
ANLISIS LXICO
Es la primera fase de un compilador. Toma el cdigo fuente modificado
preprocesadores de idioma que se escriben en la forma de las sentencias. El
analizador lxico se rompe estas sintaxis en una serie de fichas, quitando
cualquier espacio en blanco o los comentarios en el cdigo fuente.
FICHAS
Smbolos especiales
EL tpico lenguaje de alto nivel contiene los siguientes smbolos:
Smbolos aritmticos Adems (+), resta (-), mdulo (%), Multiplication(*), divisin (/)
Puntuacin Comas (,), punto y coma (;), punto (.), la flecha(->)
Asignacin =
Asignacin especial +=, /=, *=, -=
Comparacin ==, !=, <, <=, >, >=
Preprocesador #
Especificador de ubicacin &
Lgico &, &&, |, ||, !
Operador de turno >>, >>>, <<, <<<
Idioma
Un idioma es considerado como un conjunto finito de cadenas en algunos
conjuntos finitos de los alfabetos. Lenguajes de programacin son considerados
como conjuntos finitos, y matemticamente conjunto de operaciones que se
pueden llevar a cabo en ellos. Lenguajes finitos se pueden describir por medio
de expresiones regulares.
Cuando el analizador lxico leer el cdigo fuente, explora el cdigo letra por
letra; y cuando se encuentra un espacio en blanco, smbolo de operador, o
smbolos especiales, decide que una palabra se ha completado.
Por ejemplo:
int intvalue;
Hay una serie de leyes algebraicas que son obedecidas por las expresiones
regulares, que puede ser usado para manipular las expresiones regulares en
formas equivalentes.
Operaciones
Anotaciones
Si r y s son expresiones regulares denotando las lenguas L(r) y L(s), a
continuacin,
Unin: (r) | (s) es una expresin regular que denota L(r) U L(s)
Precedencia y asociatividad
Letra = [a - z] o [A - Z]
Dgito = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 o [ 0-9]
Signo = [ + | - ]
AUTMATAS FINITOS
Funcin Transicin ()
Ejemplo: suponemos FA tres dgitos acepta cualquier valor binario que termina
en dgito 1. FA = {Q(q0, qf), (0,1), q0, qf, }
Una tabla de smbolos pueden servir los fines siguientes en funcin del idioma
de la mano:
Una tabla de smbolos es simplemente una tabla que puede ser lineal o una
tabla hash. Mantiene una entrada para cada uno de los nombres con el formato
siguiente:
Por ejemplo, si tiene una tabla de smbolos para almacenar informacin acerca
de la siguiente declaracin de variables:
APLICACIN
Si un compilador es manejar una pequea cantidad de datos, a continuacin, la
tabla de smbolos puede ser implementado como una lista desordenada, que
es muy fcil de cdigo, sino que slo es adecuado para pequeas mesas. Una
tabla de smbolos se puede implementar en una de las siguientes formas:
Tabla Hash
OPERACIONES
Una tabla de smbolos, ya sea lineal o hash, debe proporcionar las siguientes
operaciones.
Insert()
Esta operacin es el que se utiliza con ms frecuencia en fase de anlisis, es
decir, la primera mitad del compilador en donde los testigos son identificados y
los nombres se almacenan en la tabla. Esta operacin se utiliza para aadir
informacin en la tabla de smbolos de nombres nicos que ocurren en el cdigo
fuente. El formato o estructura en la que los nombres se almacenan depende
del compilador en mano.
Por ejemplo:
int a;
insert(a, int);
Lookup()
Lookup() es utilizado para buscar un nombre en la tabla de smbolos para
determinar:
Lookup(smbolo)
MBITO GESTIN
Un compilador mantiene dos tipos de tablas de smbolos: a global tabla de
smbolos que puede ser accedida por todos los procedimientos y el alcance
tablas de smbolos que se crean para cada mbito en el programa.
La tabla de smbolos global contiene los nombres de una variable global (int
valor) y dos nombres de procedimiento, que debe estar disponible para todos
los nodos secundarios se muestra arriba. Los nombres mencionados en la tabla
de smbolos pro_one (y todos sus nios tablas) no estn disponibles para
smbolos pro_two tablas y su hijo.