Escolar Documentos
Profissional Documentos
Cultura Documentos
Gua 1 1
Facultad: Ingeniera
Escuela: Computacin
Asignatura: Compiladores
Contenido
En esta gua se presenta una breve introduccin a los
conceptos bsicos que se utilizan en el mbito de los
compiladores y se familiarizara al alumno con el lenguaje al
cual se le desarrollar un compilador a lo largo de las
prcticas.
Objetivos Especficos
Material y Equipo
Gua de Laboratorio N 1.
Computadora con DevC++
Introduccin Terica
Lenguajes de Programacin
Gua
La 3
programacin de computadoras se realiza en los llamados
lenguajes de programacin, stos posibilitan la comunicacin
entre
Gua 4el programador y la computadora, a travs de un
conjunto de instrucciones u rdenes especificadas por el
lenguaje.
fa
Un lenguaje de programacin puede definirse como una
notacin formal para describir algoritmos o funciones que
sern ejecutados por el ordenador.
Segn su grado de independencia de la maquina, los lenguajes
de programacin se clasifican en:
2 Compiladores. Gua 1
Lenguaje maquina: Es la notacin que entiende
directamente el ordenador, por eso sus instrucciones
estn escritas con cdigo binario. El repertorio de sus
instrucciones, as como la estructura de estas, estn
ligadas directamente a la arquitectura de la maquina.
Lenguaje ensamblador: es esencialmente una versin
simblica de un lenguaje maquina. Cada cdigo de
operacin se indica por un cdigo simblico. Por ejemplo
ADD para adicin y MUL para multiplicacin.
Lenguajes de nivel medio: tienen algunas de las
caractersticas de los lenguajes de bajo nivel (por
ejemplo acceso directo a posiciones de memoria),
aadidas a posibilidades de manejo de estructuras de
control y de datos de lenguajes de alto nivel.
Lenguajes de alto nivel: facilitan la escritura de
programas con estructuras de datos complejas, la
utilizacin de bloques, y procedimientos o subrutinas.
Dentro de estos lenguajes destacan un tipo de lenguajes,
denominados lenguajes orientados a objetos, que permiten
definir tipos abstractos de datos.
Lenguajes de orientados a problemas concretos: se
utilizan para la resolucin de problemas en un campo
especfico.
Procesadores de lenguaje
Procesadores de lenguajes es el nombre genrico que reciben
todas las aplicaciones informticas en las cuales uno de los
datos fundamentales de entrada es un lenguaje. La definicin
anterior afecta una gran variedad de herramientas software,
entre las cuales tenemos:
Traductores
Como ya se menciono, un traductor es un programa que procesa
un texto fuente y genera un texto objeto. El traductor est
escrito en lenguaje de implementacin (LI) o tambin
Compiladores. Gua 1 3
Procedimiento
MUSIM/0
Gua 3
Los componentes lxicos o tokens que conforman el lenguaje
son los4 siguientes:
Gua
Identificadores, que solo son nombres de variables y
fa estn compuestos por una nica letra minscula de rango
a-z.
Constantes numricas de un solo digito, de rango 0-9.
Operadores: +,-,*,/, y %.
Compiladores. Gua 1 5
Ejemplo 1:
M
{
R a;
R b;
c = a + b;
W c;
}
M
{
R a; R b; R c;
p = (a + b + c)/3;
W p;
}
Ejercicio 2
M
{
R a;
R b;
r = (a * a) + (b * b);
W r;
}
Ejercicio 3
Ejercicio 4
Escriba un programa en MUSIM/0 que lea 5 nmeros, calcule y
muestre en pantalla: la suma, promedio y multiplicin de los
5 nmeros.
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
Ejercicio 5
Escriba un programa en MUSIM/0 que lea un nmero y determine
si este es par o impar. Si es par deber mostrar 0 en
pantalla, mientras que si es impar deber mostrar 1
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
ENSAMPOCO/0
Instruccin Descripcin
.CODE Indica el comienzo del cdigo.
PUSHC Coloca una constante en la pila. El operando es
una constante.
PUSHA Coloca en la pila la direccin de una variable.
El operando es una variable, dado que las
direcciones se denominan con el nombre de las
variables.
LOAD Asume que el ltimo valor insertado en la pila
es una direccin. Esta direccin es extrada de
la pila y en su lugar se pone el valor ubicado
en dicha direccin. No tiene operando.
8 Compiladores. Gua 1
STORE Usa los dos ltimos elementos de la pila. Uno es
la direccin de una celda y memoria y el otro el
valor a almacenar en dicha celda. El ltimo
elemento de la pila es el valor y el otro la
direccin. Despus de ejecutada la instruccin,
los dos elementos implicados son extrados de la
pila, dejndolos en el mismo lugar. No tiene
operando.
NEG Cambia el signo del ltimo valor introducido en
la pila, dejndolo en el mismo lugar. No tiene
operando.
ADD Cambia el signo del ltimo valor introducido en
la pila, dejndolo en el mismo lugar. No tiene
operando.
MUL Opera con los dos ltimos elementos introducidos
en la pila, extrayndolos y dejando en su lugar
el producto. Por tanto la pila habr disminuido
en un elemento. No tiene operando.
DIV Opera con los dos ltimos elementos introducidos
en la pila, extrayendo primero el denominador y
despus el numerador y dejando en su lugar la
divisin entera. Por tanto la pila habr
disminuido en un elemento.
No tiene operando.
MOD Opera con los dos ltimos elementos introducidos
en la pila, extrayendo primero el denominador y
despus el numerador y dejando en su lugar el
modulo. Por tanto, la pila habr disminuido en
un elemento. No tiene operando.
INPUT Toma el valor del buffer de entrada, en este
caso el teclado, y lo coloca en la direccin
asignada a la variable. La pila no sufre
cambios.
OUTPUT Toma el valor de la direccin indicada y lo
lleva al buffer de salida, en este caso la
pantalla. La pila no sufre cambios.
END Indica el fin de programa.
Ejemplo 3
A continuacin se muestran un programa fuente en MUSIM/0, y
su traduccin al cdigo intermedio ENSAMPOCO/0
Compiladores. Gua 1 9
Cdigo en MUSIM/0
M
{
R a;
R b;
z = a + b;
W z;
}
Traduccin a ENSAMPOCO/0
.CODE
INPUT a
INPUT b
PUSHA z
PUSHA a
LOAD
PUSHA b
LOAD
ADD
STORE
OUTPUT z
END
Ejercicio 6
Traducir el siguiente cdigo en MUSIM/0 A ENSAMPOCO/0
M
{
R a;
R b;
z = a + b - 2;
W z;
}
Traduccin a ENSAMPOCO/0
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
10 Compiladores. Gua 1
Ejercicio 7
Traducir el siguiente cdigo en MUSIM/0 a ENSAMPOCO/0
M{ R a; R b; R c;
q = (a * a) + (b * b) + (c * c);
W q; }
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
Anlisis de resultados
Lenguaje Micro C o C-:
Tokens
letra = ' _ ' | ' a ' | ' b ' |... | ' z ' | ' A ' | ' B '
|... | ' Z '
dgito = ' 0 ' | ' 1 ' |... | ' 9 '
Identificadores:
Constantes numricas
Constantes de carcter.
Un chat_constant se define como una comilla simple de
apertura (), un carcter ASCII extendido imprimible y una
comilla simple de cierre.
12 Compiladores. Gua 1
Strings Constantes.
Operadores
add_op = ' + ' | ' - '
mul_op = ' * ' | '/'
eq_op = ' = = ' | '! = '
rel_op = ' < ' | ' < = ' | ' > = ' | ' > '
Ejercicio 8
Investigacin complementaria
a) Escribir un programa fuente en MICRO C que lea una
temperatura en grados Celsius, lo convierta a
temperatura absoluta y este resultado lo muestre en
pantalla.
b) Escribir un programa en MICRO C que calcule el factorial
de un nmero.
c) Investigar que es lxico y en qu consiste el anlisis
lxico de un traductor.
Bibliografa
Gua 1: Introduccin
compiladores y MUSIM/0
a Hoja de cotejo: 1
Docente: 1
Tema: Presentacin
Alumno: del programa MquinaMquina
No: No:
Alumno: Mquina No:
Docente: GL: GL: Fecha:
Docente: GL: a
EVALUACION
ACTITUD
Del 15% No tiene Actitud Tiene actitud
al 30% actitud propositiva y proactiva y sus
proactiva con propuestas son
. propuestas no concretas.
aplicables al
contenido de
la gua.
TOTAL 100%