Documente Academic
Documente Profesional
Documente Cultură
ASIGNATURA: Compiladores
2011
CRDITOS
AUTOR
Luis Fernando Zapata lvarez
Ingeniero de Sistemas, Especializacin en Gerencia Informtica, Pedagoga para profesionales,
Investigacin Holstica, Docente Corporacin Universitaria Remington Docente del departamento de Antioquia,
Investigador de la CUR y el proyecto del cual soy investigador principal TIC en los procesos de evaluacin
Luis.zapata@remington.edu.co o feingeniosa@yahoo.es
Nota: el autor certific (de manera verbal o escrita) No haber incurrido en fraude cientfico, plagio o vicios de autora; en
caso contrario eximi de toda responsabilidad a la Corporacin Universitaria Remington, y se declar como el nico
responsable.
RESPONSABLES
Mauricio Seplveda
Director de la Escuela de Ciencias Bsicas e Ingeniera
Director Pedaggico
Octavio Toro Chica
dirpedagogica.director@remington.edu.co
Coordinadora de Medios y Mediaciones
Anglica Ricaurte Avendao
mediaciones.coordinador01@remington.edu.co
GRUPO DE APOYO
Personal de la Unidad de Medios y Mediaciones
EDICIN Y MONTAJE
Primera versin. Febrero de 2011.
Derechos Reservados
Esta obra es publicada bajo la licencia CreativeCommons. Reconocimiento-No Comercial-Compartir Igual 2.5 Colombia.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
TABLA DE CONTENIDO
1.
Introduccin .................................................................................................................. 7
2.
3.
3.1.
3.3.
Actividad................................................................................................................................ 17
4.
4.1.
4.3.
Actividad................................................................................................................................ 37
5.1.
Actividad................................................................................................................................ 57
7.
8.
GLOSARIO ................................................................................................................... 71
9.
FUENTES...................................................................................................................... 72
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
1. INTRODUCCIN
El estudio de los compiladores presenta una visin del fundamento de su construccin y su
utilizacin en la teora de sistemas, aunque siempre este cobijada por el desarrollo de los
lenguajes de programacin pues dependen de su aparicin y utilizacin. Un compilador es creado
al lado del lenguaje de programacin con el objeto primordial de realizar la revisin sobre el
cdigo del programador para determinar si este est siendo bien usado (sin errores de sintaxis) y
posteriormente encadenar las lneas de cdigo de alto nivel con lneas de cdigo de maquina; que
permitan generar un cdigo ejecutable para la computadora.
Se presenta inicialmente un conjunto de conceptos que permiten a los estudiantes adquirir una
cultura que facilite la comprensin de sus contenidos y asociarlos el desarrollo posterior del curso.
Principalmente se trata de la definicin de un compilador dividido en sus dos fases principales y su
diferenciacin con un simple traductor, tambin se muestra la importancia de entender el
funcionamiento del lenguaje de bajo nivel para poder realizar el equivalente de instrucciones de
alto y la obtencin del lenguaje de maquina (lenguaje ejecutable).
El curso continua con el estudio de las fases del compilador divididas por etapas, siendo la primera
el anlisis lxico que se en carca de revisar las lneas del lenguaje por caracteres para obtener los
componentes importantes del lenguaje (tokens) y almacenarlos en una tabla denominada de
smbolos que va a ser usada posteriormente por la siguiente etapa de anlisis. Es en el anlisis
sintctico donde se realiza la revisin de la lnea solicitando los tokens a la tabla de smbolos y
devolviendo un mensaje de lnea completa o con errores de acuerdo a lo que se d. El anlisis
semntico verifica la utilizacin de los tipos de acuerdo a su definicin de almacenamiento para el
programa y es capaz de mostrar algunas inconsistencias en el uso de los tipos determinados.
Despus del anlisis viene la Sntesis que permite generar cdigos de lenguaje binario o de ese
tipo de representacin que pueden generar programas ejecutables desde un cdigo de alto nivel.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
OBJETIVO GENERAL
Desarrollar destrezas en el manejo de la estructura general de construccin de un compilador
involucrando y relacionando todas sus fases, desde el anlisis hasta la sntesis, usando ese
conocimiento en el posterior desarrollo de nuevas herramientas de compilacin o en el
mejoramiento y optimizacin de las ya construidas.
OBJETIVOS ESPECFICOS
Comprender el concepto de compilacin y su uso dentro de los sistemas diferenciando los lenguajes de
alto nivel con el lenguaje natural y con conocimiento de cmo funcionan los diferentes compiladores
actuales (como fue su diseo lgico y fsico).
Aplicar la teora de autmatas para el reconocimiento de patrones de los lenguajes, aplicando el
conocimiento terico en la solucin de problemas reales partiendo de las prcticas propuestas en clase
(realizar toda la fase de anlisis en la creacin de un compilador).
Construir un pequeo reconocedor de las instrucciones de un lenguaje tanto a nivel terico como
prctico, utilizando la teora de gramticas de los lenguajes de programacin.
Relacionar la escritura de instrucciones de alto nivel con su equivalente en bajo nivel y las estructuras
bsicas de programacin de alto nivel con su cdigo correspondiente en bajo nivel.
UNIDAD 1
Introduccin a
los
compiladores,
Definicin de un
compilador y
conceptos
generales.
UNIDAD 2
Anlisis lxico,
Definicin
de
Primera
parte
del anlisis de un
compilador.
UNIDAD 3
Anlisis
sintctico,
revisin de
lneas del
lenguaje para
determinar si
estn bien
escritas
UNIDAD 4
Fase de sntesis
del compilador,
con el objetivo
de enlazar el
cdigo
fuente
con el lenguaje
ensamblador.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Objetivo General
Comprender el concepto de compilacin y su uso dentro de los sistemas diferenciando los
lenguajes de alto nivel con el lenguaje natural y con conocimiento de cmo funcionan los
diferentes compiladores actuales (como fue su diseo lgico y fsico).
Objetivo especfico
Aprender a diferenciar los lenguajes de alto nivel con el lenguaje natural
Prueba Inicial
Seleccione la respuesta correcta segn su conocimiento previo:
1. Un compilador tiene como objeto:
a) Traducir las reglas de un lenguaje dado a otro
b) Revisar y corregir errores de escritura de un lenguaje
c) Realizar las fases completas de anlisis y sntesis a un lenguaje dado, para convertir un
cdigo para que sea entendido por la mquina.
d) Ninguna de las anteriores.
2. La diferencia entre el compilador y el traductor es:
a)
b)
c)
d)
d) El lenguaje de bajo nivel utiliza instrucciones que se comunican directamente con los
registros de la mquina.
4. Cul es la diferencia entre las fases de anlisis y las de sntesis en la construccin de un
compilador:
a) El anlisis se preocupa por la optimizacin de memoria y generacin de cdigo.
b) El anlisis es la fase previa del cumplidor que revisa las componentes individuales y
sintcticas del leguaje para poder pasar a la construccin del cdigo intermedio.
c) No hay anlisis sin una sntesis previa dentro del diseo del compilador.
d) Ninguna de las anteriores.
5. El cdigo producido por el compilador en lenguaje:
a)
b)
c)
d)
Ensamblador
Lenguaje Fortran
Lenguaje de mquina
Las respuestas a y c son acertadas.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
:=
identificador
ltimo
Operador
+
identificador
penltimo
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Las reglas gramaticales usadas por la lnea que estamos discutiendo podrn ser las siguientes:
1. <asignacin>identificador :=<expresin>
2. <expresin>identificador
3. <expresin><expresin> +<expresin>
La ltima etapa del anlisis se ocupa de la semntica de construccin de las instrucciones del
lenguaje; revisando el uso de cada uno de los tipos definidos para determinar si estn
correctamente usados de acuerdo a su definicin.
Posteriormente al anlisis contina la etapa de sntesis que se realiza en su orden de la siguiente
manera:
Generacin de cdigo intermedio: Consiste en construir un cdigo con variables temporales donde
se use el recurso de memoria para representar cada instruccin de forma temporal. En el
problema que llevamos como ejemplo el cdigo intermedio seria:
Temp1=id2+id3
Id1=Temp1
Despus el cdigo intermedio es pasado por el optimizador de cdigo y obtenemos lo siguiente:
Id1=Temp1
La etapa final en el proceso de sntesis del compilador es convertir el cdigo optimizado a un
cdigo entendible por la mquina (lenguaje de maquina o ensamblador). En nuestro ejemplo
queda de la siguiente forma:
Mov Id3, R1 Mueva el contenido de Id3 a R1
Add Id2, R1
Sume Id2 con lo que tiene en R1
Mov R1, Id1 lleve el contenido de la suma a Id1
Un segundo ejemplo sobre la forma en que se trabaja un compilador. Sea la instruccin
del lenguaje C:
Posicin = Inicial + Velocidad * 60
Etapa de anlisis:
Analizador lxico:
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
El identificador: Posicin
El smbolo de asignacin:=
El identificador: Inicial
El operador de suma: +
El identificador: Velocidad
El operador de suma: *
El identificador constante: 60
Analizador Sintctico: (Representacin mediante un rbol sintctico)
Asignacin
=
Identificador
Id1
Operador
+
identificador
Id2
Identificador
Id3
Operador
*
entero
60
Etapa de Sntesis:
Generacin de cdigo intermedio
Temp1=enteroreal (60)
Temp2=Id3*temp1
Temp3=id2+temp2
Id1=temp3
Optimizacin de cdigo:
Temp1=id3*60
Id1=1d2+temp1
Generacin de cdigo:
Mov Id3, r2
Mult #60, r2
Mov r2, r1
Add Id2, r1
Mov r1,Id1
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
2.
Grficamente:
Programa fuente
Analizador lxico
Analizador sintctico
Administrador de
Tabla de smbolos
Manejador
de errores
Optimizador de cdigo
Generador de cdigo
Programa objeto
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Prueba Final
Cul es la diferencia entre un compilador y un traductor?
Qu diferencias hay entre el anlisis lxico, el sintctico y el semntico?
Con que objeto se realiza anlisis lxico en el anlisis de un compilador?
Qu criterio fundamental usa el compilador al optimizar el cdigo intermedio? Explique
Realizar las dos fases completas del reconocedor para la siguiente instruccin de un lenguaje
dado:
while(a>=1500)
c=a*(b-d)/f
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
3.3. Actividad
Lectura de la introduccin a los compiladores y sus conceptos bsicos en los libros gua o en alguna
direccin de internet con el tema. Discusin en el aula o a nivel virtual, para entender la
terminologa sobre compiladores.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
4. ANLISIS LXICO
Objetivo General
Aplicar la teora de autmatas para el reconocimiento de patrones de los lenguajes,
aplicando el conocimiento terico en la solucin de problemas reales partiendo de las
prcticas propuestas en clase (realizar toda la fase de anlisis en la creacin de un
compilador).
Objetivos especficos
Aplicar el conocimiento terico en la solucin de problemas reales a partir de las prcticas
propuesta en clase.
Prueba Inicial
Seleccione la respuesta correcta segn su conocimiento previo:
Una componente del lenguaje es:
a. Una lnea
b. Una instruccin
c. Un identificador
d. Un bloque de instruccin
Para recorrer por caracteres una instruccin debo:
a)
b)
c)
d)
a.
b.
c.
d.
El carcter de inicio
La cantidad de caracteres
Las constantes pueden ingresar con una letra al inicio
Las variables son alfanumricas
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
0
So
S1
1
S1
So
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
El Grafico de Transiciones representa la MEF con un grfico de crculos y flechas que equivale a la
matriz representada a continuacin:
Tabla de transiciones:
SE/Estados
CPUP
CPUI
CIUP
CIUI
0
CIUP
CIUI
CPUP
CPUI
1
CPUI
CPUP
CIUI
CIUP
Aceptacin=1
0
1
0
0
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
0
1
2
3
4
5
6
7
Err
Var
1
Err
1
7
Err
Err
7
Err
Err
Cte
err
err
err
4
err
err
4
err
err
,
err
2
err
err
6
2
err
6
err
(
err
3
err
err
err
err
err
err
err
)
err
err
err
err
5
err
err
5
err
0
1
0
0
0
1
0
0
0
Nota: Se detectaron estados equivalentes pos inspeccin: Los estados 0,2; 3,6; 4,7.
Estados equivalentes
Son estados a partir de los cuales se reconoce el mimo conjunto de secuencias.
Cuando se detecta que una MEF tiene estados equivalentes se puede simplificar la mquina.
La MEF para la lista de variables en FORTRAN se simplificara de la siguiente manera:
02
1
36
47
5
Err
Var
1
Err
47
Err
Err
Err
cte
err
err
47
err
err
err
,
err
02
err
36
02
err
(
err
36
err
err
err
err
)
err
err
err
5
err
err
0
1
0
0
1
0
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Hay situaciones en las cuales no se detectan estados equivalentes por simple inspeccin como en
el caso anterior y la MEF tiene estados equivalentes. Para que dos o ms estados sean
equivalentes deben cumplir las condiciones:
Condicin de Compatibilidad: los dos o ms estados deben ser de aceptacin o de rechazo.
Condicin de Propagacin: Para un mismo smbolo de entrada los dos o ms estados
deben hacer transicin hacia estados equivalentes.
Mtodo de particiones:
Sirve para identificar estados equivalentes en una MEF y consiste en aplicar las dos condiciones
anteriores, con el objeto de simplificar la MEF.
Ejemplo:
A
6
7
1
4
7
4
4
1
2
3
4
5
6
7
b
3
3
5
6
3
1
2
0
0
0
0
1
1
1
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
P1/a
5a7
6a4
7a4
P2= {6,7} Son de la misma particin (con el smbolo a van ambos al estado 4)
Estados que quedan en la misma particin son equivalentes. 1 y 2; 6 y 7 son equivalentes.
MEF simplificada:
12
3
4
5
67
A
67
12
4
67
4
B
3
5
67
3
12
0
0
0
1
1
Las MEF construidas en los ejemplos inciales se denominan determinsticas ya que cada transicin
es nica y tiene un solo estado inicial.
La MEF no determinsticas son aquellas que pueden tener ms de un estado inicial y/o alguna
transicin puede ser hacia dos o ms estados.
Ejemplo:
0
1
2
3
A
1
3,0
2,3
1
B
2
1
0
2
0
1
0
1
3b2a
3*Aceptacin
S para una hilera de entrada hay solo un camino que lleva a un estado de aceptacin la hilera se
acepta.
prioridad, seguido de concatenacin y luego la unin de conjuntos. Los parntesis solo se incluyen
para eliminar ambigedades.
(Ing. Miguel ngel Durn Jacobo, Introduccin a los Lenguajes formales, Documento en pdf,
pgina12,http://www.itchetumal.edu.mx/paginasvar/Maestros/mduran/Archivos/Unidad%206%2
0Introduccion%20a%20los%20lenguajes%20formales.pdf )
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Apile( ( )
So
avance
Dasapile( ( )
So
Avance
Pila vaca
Apile( ( )
So
avance
Pila vaca
0
Apile( 0 )
So
Avance
Apile( 0 )
So
Avance
1
S1
retenga
1
Desapile (0 )
S1
Avance
So
Pila vaca
S1
Ejemplo 3:
Construya una MP que reconozca secuencias de la forma: W 2 Wrcon W= (1+0)* y
R: cadena en reversa.
10111211101
Smbolos de entrada= {0, 1, 2, }
Smbolos en la pila= {0,1, pila vaca}
Estados= {So, S1}
Estado inicial= So
Configuracin inicial de la pila= pila vaca
0
1
2
Apile (0 )
Apile (1 )
S1
1
So
So
Avance
Avance
Avance
Apile (0 )
Apile (1 )
S1
0
So
So
Avance
Avance
Avance
Apile (0 )
Apile (1 )
S1
Pila vaca
So
So
Avance
Avance
Avance
So
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
1
desapile (1 )
So
Avance
desapile (0 )
So
Avance
Pila vaca
S1
Operaciones adicionales con la mquina de pila
1. Operacin Replace:
Forma general. Replace ()
Siendo una hilera cualquiera de smbolos.
La operacin reemplaza el tope de la pila por la cantidad de smbolos que tiene la hilera .
2. Operacin Out
Forma general: Out ()
Imprime la hilera
Uso de la operacin replace
Construir una mquina de pila de un solo estado que reconozca secuencias de la forma:
0 n1 n con n>0.
Smbolos de entrada= {0,1, }
Smbolos en la pila= {pv,*,0}
So= Se reciben ceros y unos despus de * en la pila
Configuracin inicial de la pila = {pv*}
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
0
R
Pv
Replace(0,*)
So
Avance
R
1
Desapile (1)
So
Avance
Desapile (*)
So
retenga
R
Pv
0
Out(0)
So
Avance
Out(0)
So
avance
1
Apile(1)
So
Avance
Apile(1)
So
avance
Desapile
out(1)
retenga
Acepte
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Construir una MEF que reconozca secuencias de unos y de ceros de tal manera que el
nmero de unos sea par y el nmero de ceros sea impar o se de imparidad en la cantidad
para ambos.
Construir una MEF que reconozca secuencias que comiencen en cualquier letra y terminen
en aba.
Construir una MEF que reconozca secuencias de a y b tales que el nmero de b sea impar.
Construir una MEF que reconozca trayectorias para subir desde el primer piso hasta el
quinto usando las escaleras o el ascensor y sabiendo que por l ascensor subo de a dos
pisos y por las escaleras de a piso.
Construir una MEF que permita reconocer secuencias de unos y de ceros que empiecen
por 1 tengan posteriormente cantidad par de ceros.
Construir una MEF que lea una lnea de VB con estructuras condicionales y reconozca las
variables los operadores, las constantes y el tipo.
Construir una MEF que reconozca secuencias combinadas de vocales y consonantes que
permitan solamente la intercalacin de smbolos (vocal-consonante o consonante vocal).
La secuencia puede terminar en cualquier letra.
TALLER DE EXPRESIONES REGULARES
Construir una expresin regular para los siguientes conjuntos:
Conjunto de todas las variables con solo letras y un digito al final
Secuencias de caracteres que comiencen con un digito y terminen con una letra teniendo
una o ms letras o nmeros entre digito y letra en cualquier orden y cantidad
Todos los alfanumricos que empiecen por vocal terminen en cualquier combinacin de
dgitos.
Nmeros decimales de cualquier cantidad de cifras
Secuencias de caracteres que comiencen con un digito y terminen con una letra teniendo
una o ms letras o nmeros entre digito y letra en cualquier orden y cantidad
Cul es el conjunto determinado por la expresin regular dada:
(Vocal)(01)*(consonante)
Si L(r) = {a, b, c} y L(s)={d, e} que es: L(s) L(r)L(s) L(r)
(digito)*letra digito
(vocal consonante) digito
TALLER DE MAQUINAS DE PILA
Construir una mquina de pila que reconozca secuencias de la forma:
0 m 1 n 0 m 2 1m 0 n 1m . Con m>0;n>0
Construir una mquina de pila que reconozca secuencias de la forma:
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
0 m 1 n 0 n 1m .
Construir una mquina de pila que permita que permita reconocer secuencias de la forma:
an bm z am bn .
Construir una MP de un solo estado que reconozca secuencias de 1 0 que sean
intercaladas y tengan la misma cantidad de unos que de ceros.
Prueba Final
Selecciona la respuesta correcta para los siguientes enunciados:
TALLER GENERAL DE ANALISIS LEXICO
1. Una expresin regular es importante porque:
a)
b)
c)
d)
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
a) Que puedo aceptar en esta condicin en el primer estado de una mquina de dos estados
b) Que no puedo aceptar en una mquina de dos estados en el primer estado
c) Que no puedo aceptar en una mquina de dos estados en su ltimo estado
d) Ninguna de las anteriores.
5. Las expresiones regulares son importantes porque?:
a.
b.
c.
d.
4.3. Actividad
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
5. ANLISIS SINTCTICO
Objetivo General
Construir un pequeo reconocedor de las instrucciones de un lenguaje tanto a nivel
terico como prctico, utilizando la teora de gramticas de los lenguajes de
programacin.
Objetivos especficos
Conocer y usar la teora de gramticas de los lenguajes de programacin.
Aplicar el conocimiento terico en la solucin de problemas reales partiendo de las
prcticas propuestas en clase
Prueba Inicial
De acuerdo a tu conocimiento actual contesta las siguientes preguntas:
Cmo crees que estn hechos los lenguajes de programacin de alto nivel?
Conociendo la gramtica del lenguaje espaol con cuantas normas est construida? Un
lenguaje tendr la misma cantidad de normas de construccin
Cmo se construyeron entonces los lenguajes de programacin que conoces?
Si no existiera el anlisis en la compilacin se podra encontrar los errores cometidos por
el programador al escribir el cdigo?
El objetivo de toda gramtica es generar hilera final de T, lo cual se consigue mediante un proceso
llamado derivacin.
Derivar consiste en reemplazar un N.T por el lado derecho de alguna produccin que defina ese
N.T.
Todo proceso de derivacin debe comenzar con el smbolo inicial de la gramtica, el cual es el N.T.
del lado izquierdo de la primera produccin.
Ejemplo:
1. <S>
2. <S> <P>
3. <P> I
<S>+<P>
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
<S>
<P>
I
Segundo rbol de derivacin:
<S>
<S> + <P>
<P> +
I
I
I
Gramticas Lineales por la derecha: son gramticas cuyas producciones son de la forma:
<NT>
<NT>
w
w<NT>
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
1. <E>(<E>)
2. <E>I
Considere la gramtica G con la gramatical simple:
1. <E><E>+I
2. <E>I
La gramtica siguiente:
1.
2.
3.
4.
5.
<sentencia><sent_if>
<sentencia>otro
<sent_if>if(<exp>)<sentencia>
<sent_if>if(<exp>)<sentencia>else<sentencia>
<expre>0 o 1
1. <A>a<A>
2. <A>a
Recursiva por la derecha
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
<E><E>+<E>
<E><E>-<E>
<E><E>*<E>
<E><E>/<E>
<E><E>^<E>
<E> (<E>)
<E>I
+ <E>
<E>
<E>
*
I
Pero se puede derivar aplicando primero el producto y el rbol de derivacin queda abriendo a la
izquierda y generando un rbol de derivacin distinto para la misma expresin extrada del
proceso.
Estas operaciones son ambiguas, lo cual puede traer errores, por esto se utiliza la prioridad de
operadores adems se debe tener en cuenta la asociatividad. Se debe tener en cuenta esta ltima
caracterstica por la izquierda o por la derecha dependiendo cuando lo necesite.
Operadores de menor prioridad deberan ser primeros en las produccionesque los de mayor. Una
gramtica para expresiones aritmticas reescrita con estas caractersticas seria:
1.
2.
3.
4.
5.
6.
7.
8.
<E><E>+<T>
<E><E>-<T>
<E><T>
<T><T>*<F>
<T><T>/<F>
<T><F>
<F><F>^<P>
<F><P>
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
9. <P>(<E>)
10. <P>I
En la potenciacin se realiza la asociatividad por la derecha:
<F><P>^<F>
Otra gramtica para expresiones aritmticas:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<E><T><LT>
<LT>+<T><LT>
<LT>-<T><LT>
<LT>
<T><F><LF>
<LF>*<F><LF>
<LF>/<F><LF>
<LF>
<F><P><LP>
<LP>^<P><LP>
<LP>
<P>(<E>)
<P>I
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
<E><E>+<T> {+}
<E><T>
<T><T>*<F>{*}
<T><F>
<F>(<E>)
<F>I{I]
Ejemplo 2: Construir una gramtica de traduccin que genere cualquier secuencia de unos y de
ceros que produzca una salida: 1m0n siendo m el nmero de unos y n el nmero de ceros.
Primero Generamos la gramtica que genere cualquier secuencia de unos y ceros:
1. <A>1<A>
2. <A>0<A>
3. <A>
La gramtica de traduccin seria:
1. <A>1 {1} <A>
2. <A>0<A> {0}
3. <A>
Gramticas con atributos:
Atributo se refiere a la parte del valor de un terminal o un no terminal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<E><E>+<T>
p= q+r
<E><T>
p=q
<T><T>*<F>
p=q*r
<T><F>
p=q
<F>(<E>)
p=q
<F>I
p=q
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Atributos Sintticos: Atributos que se mueven de abajo hacia arriba en el rbol de derivacin
Atributos heredados: Atributos que se mueven de arriba hacia abajo o de izquierda a derecha en el
mismo nivel.
<R>
<S>
#1
#2
,
#3
)
#4
A
#1: DESAPILE , AVANCE
#2: REPLACE(<R><S>), AVANCE
#3: REPLACE(<R><S>), AVANCE
#4: DESAPILE, AVANCE
Si derivamos secuencias de la gramtica y probamos con el reconocedor deben ser reconocidas
como de aceptacin. Si hay secuencias que no responden a las normas de la gramtica el
analizador sintctico las debe rechazar en el anlisis.
Caractersticas:
Gramticas S: Son gramticas en las cuales el lado derecho comienza por un terminal y
producciones cuyo smbolo del lado izquierdo sea el mismo, los terminales con los que comienzan
sus lados derechos son diferentes.
Conjuntos
Primeros de un N.T.: Es el conjunto de los terminales con los cuales puede comenzar una hilera
derivada a partir de ese N.T.
Primeros de una produccin: Es el conjunto de terminales con los cuales puede comenzar una
hilera al aplicar esa produccin.
Siguientes de un smbolo X: (x es T. o N.T.) es el conjunto de T que pueden aparecer despus de X
en algn proceso de derivacin.
Normas para el clculo de siguientes:
La marca de fin de secuencia () siempre pertenecer al conjunto de siguientes del smbolo inicial
de la gramtica.
Cuando busco los siguientes de un smbolo que es ltimo en el lado derecho, entonces el conjunto
de siguientes es el mismo que el de su lado izquierdo.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
<S>a<A><S>
<S>b
<A>c<A><S>
<R>
#3
A
17. <IDEN> I
Conjuntos de seleccin:
Sel(1)=primeros(<S>)= {if |while}
Sel(2)= {if |while}
Sel(3)=primeros(<EXP1>)= {(, I}
Sel(4)={<}
Sel(5)={>}
Sel(6)=siguientes(<R>)= { ) }
Sel(7)=primeros(<SUM>)={(,I}
Sel(8)={+}
Sel(9)={Sel(10)=siguientes(<SUMAR>)= {<,>,)}
Sel(11)=primeros(<MUL>)={(,I}
Sel(12)={*}
Sel(13)={/
Sel(14)={<,>,+,-)
Sel(15)= {(,I}
Sel(16)={(}
Sel(17)={I}
Definicion del reconocedor:
Simbolos de Entrada={if,while,(,),+,<,>,-,*,/,}
Simbolos en la pila={
,<IF>, <S>,<EXP>,<EXP1>,<R>,
<SUM>,<SUMAR>,<MUL>,<FACT>,<IDEN>,(,)}
Configuracin inicial de la pila={ ,<IF>}
Reconocedor descendente para la gramatica:
if
While
<
>
)
(
<IDEN>
<FACT>
<MUL>
<SUMAR>
)
+
Desapile,
avance
Desapile,
avance
#16
#14 #14
#17
#14
#15
#10 #10
#15
#10
#8
#9
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
<SUM>
<R>
<EXP1>
<EXP>
<S>
<IF>
#11
#4
#5
#11
#6
#7
#3
#2
#1
#7
#3
#2
#1
A
<S>I
<S>(<S><R>
<R>,<S><R>
<R>)
SE={I,(, , ,), }
SP={ ,<S>,<R>, }
CIP={ <S>}
Estado nico de reconocimiento.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
I
Rd
#1
Rg
<R>
<S>
(
Re
#2
Rh
,
#3
Ra
Ri
)
#4
Rb
Rj
Rf
Rc
A
<S>(<A><S>)
<S>(b)
<S>(<S>a<A>)
<S>(b)
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Configuracin inicial:
(
<S>
<A>
(
A
B
)
ID1
ID1
SHIFT
IDA
SHIFT
ID1
IDO
R
R
R
R
ID1
R
<A>
(
B
A
)
<S>
<S>0
<S>0
<S>1
<S>3
<A>1
<A>3
(
B
A3
A4
)1
)2
)3
)4
Smbolo en la pila
<S>1
<S>3
<S>0
<A>1
<A>3
(
b
A3
A4
)1
)2
)3
)4
<A>
Tabla de apilamiento:
(
A
(
)1
A3
<S>1
(
)3
<S>3
<A>1
A4
B
)2
<A>3
(
)4
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
<S>0
<S>1
<S>3
<A>1
<A>3
(
B
A3
A4
)1
)2
)3
)4
t
f
i
H
S
R
A
R
R
R
R
R
R
R
R
Reduce(1)
Reduce(2)
Reduce(3)
Reduce(4)
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
1.
Existe en el lado derecho de una produccin una hilera de la forma alfa AB y x pertenece a
primeros (B).
2.
A es y x pertenece a primeros (<S>) siendo <S> el smbolo inicial de la gramtica.
El principio de shift se enuncia:
A est debajo de X
<S><A> b <B>
<S> d
<A><C><A>b
<A><B>
<B> c <S> d
<B>
<C> a
<C>ed
Ejercicio sobre gramticas
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
<S><A> b <B>
<S> d
<A><C><A>b
<A><B>
<B> c <S> d
<B> f
<C> a
<C>ed
1.
2.
3.
4.
5.
6.
7.
8.
<S><A> b <B>
<S> d
<A><C><A>b
<A><B>
<B> c <S> d
<B>
<C> a
<C>ed
1.
2.
3.
4.
<S><A>
<S> a
<A>
<A> b <S>c <A>
b.
C.
D.
1.
2.
3.
4.
5.
<S> a <B><S>
<S> b
<B> c<S>
<B>
<B> d <B>a
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
E.
1.
2.
3.
4.
5.
6.
<S> b<A><S><B>
<S> d<A>
<A> d<S>ca
<A> e
<B> c <A> a
<B>a
2. Realizar un proceso corto de derivacin y verificar cada uno de los reconocedores que acaban
de construir.
Prueba Final
Escribir gramticas para cada uno de los siguientes enunciados:
1.
2.
3.
4.
5.
Condicional de un lenguaje
Instruccin de asignacin
Instruccin con ciclos
Instruccin con operadores lgicos
Instruccin con operadores relacionales
Derivar cada una de las gramticas para obtener al menos una hilera del lenguaje que
representa.
Construir los reconocedores descendentes para las gramticas y probarlos con las
derivaciones anteriores.
5.3. Actividad
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
<EX><PCLAVE>(<S>)
<S><REL><SIGNO>
<SIGNO>= =<REL><SIGNO>
<SIGNO>><REL><SIGNO>
<SIGNO><<REL><SIGNO>
<SIGNO>
<REL><SUMA><SUMP>
<SUMP>+<SUMA><SUMP>
<SUMP>
<SUMA><PROD><MULT>
<MULT>*<PROD><MULT>
<MULT>
<PROD>(<REL>)
<PROD>I
<PCLAVE>IF-WHILE
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Orden de Evaluacin
El orden puede afectar la eficiencia del cdigo
En algn orden se puede requerir menos registros que en otro
Encontrar un orden ptimo es un problema completo
Referencia tomada de:
(Pontificia U. Javeriana Cali - Ingeniera de Sistemas y Computacin Compiladores Prof. Ma.
Constanza Pabn
http://cic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:compi:comp_sesion26.pdf)
3.4.6Generacin de cdigo de bajo nivel
Conversin de cdigo en macro asamblea arquitectura IA-32
Formato de Instruccin: La arquitectura IA-32 codifica sus instrucciones mquina con un formato
de longitud variable. Toda instruccin tiene una longitud entre 1 y 16 bytes. Las instrucciones
comienzan por un prefijo de hasta cuatro bytes, seguido de uno o dos bytes que codifican la
operacin, un byte de codificacin de acceso a operandos, un byte denominado escala-basendice, un desplazamiento de hasta cuatro bytes, y finalmente un operando inmediato de hasta
cuatro bytes. Excepto los bytes que codifican la operacin, el resto de componentes son todos
opcionales, es decir, su presencia depende del tipo de operacin.
Los prefijos son bytes que modifican la ejecucin normal de una instruccin de acuerdo a unas
propiedades predefinidas. El procesador agrupa
estos prefijos en cuatro categoras y se
pueden incluir hasta un mximo de uno por categora. Por ejemplo, el prefijo LOCK hace que
mientras se ejecuta la instruccin el procesador tiene acceso en exclusiva a cualquier dispositivo
que sea compartido. Este prefijo se utiliza en sistemas en los que se comparte memoria entre
mltiples procesadores.
Las instrucciones del lenguaje mquina de la arquitectura IA-32 pueden tener uno de los tres
siguientes formatos:
Operacin. Las instrucciones con este formato no precisan ningn operando, suelen ser
fijos y por tanto se incluyen de forma implcita. Por ejemplo, la instruccin RET retorna de
una llamada a una subrutina.
Operacin Operando. Estas instrucciones incluyen nicamente un operando. Algunas de
ellas pueden referirse de manera implcita a operandos auxiliares. Un ejemplo de este
formato es la instruccin INC %eax que incrementa en uno el valor de su nico operando.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Description
04 ib
ADD AL,imm8
Addimm8to AL
05 iw
ADD AX,imm16
Addimm16to AX
05 id
/0 ADD
r/m16,imm16
81 /0 id
ADD
r/m32,imm32
83 /0 ib
ADD
r/m16,imm8
83 /0 ib
ADD
r/m32,imm8
00 /r
ADD r/m8,r8
Addr8tor/m8
01 /r
ADD r/m16,r16
Addr16tor/m16
01 /r
ADD r/m32,r32
Addr32tor/m32
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
02 /r
ADD r8,r/m8
Addr/m8tor8
03 /r
ADD r16,r/m16
Addr/m16tor16
03 /r
ADD r32,r/m32
Addr/m32tor32
Instrucciones aritmticas:
Instruccin
ADDL
contador
Comentario
$3,
SUB
%eax, Deposita en memoria el nmero de 32 bits resultante de la operacin contadorcontador
%eax.
NEGL contador
Instruccin
Comentario
MULB $3
IMUL %eax
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
El programa ensamblador:
En general, a los programas encargados de traducir de un lenguaje de programacin a otro se les
denomina compiladores y todos ellos trabajan de forma similar. Dado un conjunto de ficheros
escritos en un lenguaje, producen como resultado otro fichero que contiene la traduccin a un
segundo lenguaje. En el caso del ensamblador, la traduccin es de lenguaje ensamblador a
lenguaje mquina.
En adelante se utilizarn los trminos compilador y ensamblador de forma indistinta y siempre
en referencia al programa que traduce de lenguaje ensamblador a lenguaje mquina.
As como el lenguaje mquina de un procesador es nico e inmutable (a no ser que se redisee el
procesador), pueden coexistir mltiples lenguajes ensamblador que representen el mismo
lenguaje mquina. La representacin de las instrucciones mediante cadenas alfanumricas es un
convenio utilizado para facilitar su escritura, por lo que pueden existir mltiples convenios de
este tipo siempre y cuando se disponga del ensamblador los que traduzca al lenguaje mquina del
procesador.
El desarrollo de programas en ensamblador requiere un conocimiento en detalle de la
arquitectura del procesador y una meticulosidad extrema a la hora de decidir qu instrucciones y
datos utilizar. Al trabajar con el lenguaje mquina del procesador, la comprobacin de errores de
ejecucin es prcticamente inexistente. Si se ejecuta una instruccin con operandos incorrectos, el
procesador los interpretar tal y como estipula su lenguaje mquina, con lo que es posible que la
ejecucin del programa produzca resultados inesperados.
Traduccin de construcciones de alto nivel a ensamblador
Las construcciones que ofrecen los lenguajes de alto nivel como Java para escribir programas
distan mucho de la funcionalidad ofrecida por el lenguaje mquina del procesador. Por ejemplo,
en Java se permite ejecutar una porcin de cdigo de forma iterativa mediante las construcciones
for o while hasta que una condicin se deje de cumplir. El compilador es el encargado de producir
el cdigo ensamblador tal que su ejecucin sea equivalente a la especificada en el lenguaje Java.
A continuacin se muestra cmo la funcionalidad ofrecida por el procesador es suficiente para
traducir estas construcciones a secuencias de instrucciones ensamblador con idntico significado.
Traduccin de un if/then/else
Estructura de un if/then/else
If (expresin booleana) {
Bloque A
} Else {
Bloque B
}
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Cdigo ensamblador
cmpl $3, x
jgbloqueB
mov j, %eax
inc %eax
cmp %eax, i
jnebloqueB
# Comparar si x <= 3
# Si falso ir a bloque B
# Obtener j + 1
# Comparar i == (j + 1)
# Si falso ir a bloque B
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Cdigo ensamblador
# Traduccin del bloque A
jmpfinifthenelse # Evitar bloque B
bloqueB:
# Traduccin del bloque B
finifthenelse: # Final de traduccin
Estructura de un switch
switch (expresin) {
casevalor A:
Bloque A
Break; // Opcional
Casevalor B:
Bloque B
Break; // Opcional
Default:
Bloque por defecto // Opcional
La semntica de esta construccin establece que primero se evala la condicin y a continuacin
se compara el resultado con los valores de cada bloque precedido por la palabra clave case. Esta
comparacin se realiza en el mismo orden en el que se definen en el cdigo y si alguna de estas
comparaciones es cierta, se pasa a ejecutar el cdigo restante en el bloque (incluyendo el resto de
casos). Si ninguna de las comparaciones es cierta se ejecuta (si est presente) el caso con etiqueta
default. La palabra clave break se puede utilizar para transferir el control a la instruccin que sigue
al bloque switch
La estructura del cdigo ensamblador para implementar esta construccin debe comenzar por el
clculo del valor de la expresin. A continuacin se compara con los valores de los casos siguiendo
el orden en el que aparecen en el cdigo. Si una comparacin tiene xito, se ejecuta el bloque de
cdigo que le sigue. Si se encuentra la orden break se debe saltar al final del bloque. En el caso de
que ninguna comparacin tenga xito, se debe pasar a ejecutar el bloque default. Supngase que
la evaluacin de la expresin es un valor que se almacena en el registro %eax.
Traduccin de un switch a ensamblador
# Evaluar la expresin
# Resultado en %eax
mp $valorA, %eax
# Caso A
Je bloquea
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
En este bloque es importante tener en cuenta que la expresin booleana se evala al menos una
vez y se contina evaluando hasta que sea falsa. Supngase que la evaluacin de la expresin es
cero en caso de ser falsa y diferente de cero si es cierta y el valor resultante se almacena en
%eax.
Traduccin de un bucle while a ensamblador
eval: # Evaluar la expresin booleana
# Resultado en %eax
cmp $0, %eax
jefinwhile
# Traduccin del cdigo interno
Jmpeval
finwhile:
# Resto del programa
Tras evaluar la condicin se ejecuta una instruccin que salta al final del bloque si es falsa. En caso
de ser cierta se ejecuta el bloque de cdigo y tras l un salto incondicional a la primera instruccin
con la que comenz la evaluacin de la condicin. El destino de este salto no puede ser la
instruccin de comparacin porque es muy posible que las variables que intervienen en la
condicin hayan sido modificadas por lo que la evaluacin se debe hacer a partir de estos valores.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Cdigo ensamblador
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
7. PISTAS DE APRENDIZAJE
Tener en cuenta: El estudio de los principales operadores y registros de bajo nivel para la
conversin de cdigo.
Tener en cuenta: La relacin entre el analizador lxico y el sintctico a la hora de realizar la
prctica de revisin de lneas.
Tener en cuenta: La definicin de estados en la mquina de estado finito para dar una solucin
conveniente a los problemas del analizador lxico.
Tener en cuenta: Que en las matrices de la mquina de pila se deben colocar claramente al final
de la fila en los estados cuales de esto son de aceptacin.
Tenga presente: que en una mquina de pila solo se acepta en el ltimo estado.
Tenga presente: que los reconocedores de pila siempre son de un solo estado y comienzan en la
pila con el smbolo inicial de la gramtica
Traiga a la memoria: que en el clculo de siguientes de un smbolo, se analiza su aparicin en el
lado derecho de todas las producciones.
Traiga a la memoria: que para construir reconocedores descendentes se deben hallar los
conjuntos de seleccin de las producciones de la gramtica.
Tener en cuenta: que para convertir cdigo debe saber la relacin entre las estructuras de
programacin de alto nivel y las de bajo nivel.
Traiga a la memoria: que una expresin regular es una representacin simblica de operadores y
operaciones que representa a un lenguaje regular.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
8. GLOSARIO
Ascendente: Reconocimiento de gramticas que se hace de derecha a izquierda en la produccin.
Autmatas: Teora aplicada en la solucin de problemas del analizador lxico
Concatenacin: Operacin de las expresiones regulares que pega el primer conjunto al segundo
Descendente: Reconocimiento de gramticas que se hace de izquierda a derecha en una
produccin.
Ensamblador: Lenguaje que se encuentra al nivel de la mquina en el compilador y tiene su propio
cdigo de instruccin.
Gramticas: Conjunto de normas del lenguaje que permiten su generacin.
Identify: Principio de identificacin de smbolos en un reconocedor ascendente.
Lexemas: Componente generada por el analizador lxico que hace parte de la revisin por
caracteres.
Produccin: Es una norma escrita para una gramtica que combina terminales y no terminales con
el smbolo se define.
Replace: Operacin sobre la pila que permite reemplazar el tope por una cadena dada
Reduce: principio de reduccin usado por el reconocimiento Ascendente
Seleccin: Conjuntos usados por la teora de reconocimiento para saber dnde se aplica una
produccin.
Semntico: Parte del anlisis del compilador que determina si las componentes estn siendo bien
usadas o no dentro del cdigo de alto nivel.
Sintctico: Parte del anlisis del compilador que se encarga de revisar si las lneas estn bien
escritas
Token: Son las partes de los grandes grupos de componentes principales de los lenguajes de
programacin (ejemplo: variables, constantes y palabras claves).
Palote: Operacin de una expresin regular que representa la unin.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
9. FUENTES
Fuentes Bibliogrficas
Lemote Karen A.(1996) Fundamentos de CompiladoresCECSA
Aho, A. Sethi, Ullman J (1990) Compiladores principios, tcnicas y herramientas , Addisonwesley
Grune Dick y otros (2000), Modern CompilerDesingWiley
Rosenkrantzstearns Lewis Compiler Desing Theory
Allen Holub ompilerDesig in Compiler
G. Snchez Dueas Compiladores e interpretes
http://www.angelfire.com/linux/eotto/comp_clase2.pdf
http://148.202.148.5/cursos/cc209/teoriacomp/MODULO_2/Teoria_2_2.htm
http://search.conduit.com/Results.aspx?q=expresiones+regulares+compiladores&ctid=CT
1854633&octid=CT2431232&SearchSource=1
http://www.scribd.com/doc/30646172/Expresiones-Regulares
http://www.lpsi.eui.upm.es/webtalf/Analisis%20sintactico.pdf
http://ocw.uc3m.es/ingenieria-telematica/arquitectura-deordenadores/lecturas/html/isasubset.html
http://www.dea.icai.upcomillas.es/daniel/asignaturas/EstComp_2_IINF/TranspEstComp_2
_IINF/Cap4ModDir.pdf
http://www.scribd.com/doc/30646172/Expresiones-Regulares
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia