Documente Academic
Documente Profesional
Documente Cultură
Gua 1
Facultad:
Ingeniera
Escuela:
Computacin
Asignatura: Compiladores
Tema:
Introduccin
Lenguaje Micro C
Compiladores
al
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 los
lenguajes que se utilizaran en el curso.
Objetivos Especficos
Material y Equipo
Gua No 1
Introduccin Terica
Lenguajes de Programacin
La
programacin
de
computadoras
se
realiza
en
los
llamados
lenguajes
de programacin,
stos
posibilitan
la
comunicacin
entre
el
programador
y
la computadora,
a
travs
de
un
conjunto
de
instrucciones u rdenes especificadas por el lenguaje.
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:
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
Compiladores. Gua 1
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: Es un programa que procesa un texto fuente y
genera un texto objeto
Ensamblador: Si el lenguaje fuente es el lenguaje
ensamblador y el lenguaje objeto es el lenguaje maquina,
entonces al traductor se le llama ensamblador.
Compiladores: Un traductor que transforma texto fuente de
lenguajes de alto nivel a lenguajes de bajo nivel se le
denomina compilador.
Intrprete: Son programas que simplemente ejecutan las
instrucciones que se encuentran en el texto fuente.
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
denominado lenguaje host. El texto fuente est escrito en
lenguaje fuente (LF), por ejemplo un lenguaje de alto nivel.
El texto objeto est escrito en lenguaje objeto (LO), por
Compiladores. Gua 1 3
LF
LO
LI
Compiladores. Gua 1
Procedimiento
MUSIM/0
Los componentes lxicos o tokens que conforman el lenguaje
son los siguientes:
Identificadores, que solo son nombres de variables y 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
a;
b;
= a + b;
c;
Compiladores. Gua 1
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
Ejercicio 2
M
{
R a;
R b;
r = (a * a) + (b * b);
W r;
}
Describa lo que hace el programa anterior:
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
Ejercicio 3
Escriba un programa en MUSIM/0 que lea un nmero, calcule y
muestre en pantalla cuanto es ese nmero elevado al cubo.
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
Ejercicio 4
Escriba un programa en MUSIM/0 que lea 5 nmeros, calcule y
muestre en pantalla: la sumatoria, promedio y multiplicatoria
de los 5 nmeros.
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
Compiladores. Gua 1 7
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
Como lenguaje objeto se utiliza un lenguaje intermedio que es
un pequeo ensamblador, que se denomina ENSAMPOCO/0. Este
ensamblador trabaja sobre una maquina abstracta, en este caso
particular es una mquina de pila. La maquina tendr una
memoria de 26 celdas cuyas direcciones se nombrarn con las
letras de la a a la z, y una pila LIFO donde se
realizarn las operaciones aritmticas.
A continuacin se describe
distintas instrucciones.
Instruccin
.CODE
PUSHC
PUSHA
LOAD
STORE
la
forma
de
trabajo
de
las
Descripcin
Indica el comienzo del cdigo
Coloca una constante en la pila. El operando
es una constante
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
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
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
Compiladores. Gua 1
NEG
ADD
MUL
DIV
MOD
INPUT
OUTPUT
END
Ejemplo 3
A continuacin se muestran un programa fuente en MUSIM/0, y
su traduccin al cdigo intermedio ENSAMPOCO/0
Cdigo en MUSIM/0
M
{
R a;
R b;
z = a + b;
W z;
}
Compiladores. Gua 1 9
Traduccion 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; }
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
Compiladores. Gua 1 11
utilizaremos
las
definiciones
letra = ' _ ' | ' a ' | ' b ' |... | ' z ' | ' A ' | ' B '
|... | ' Z '
dgito = ' 0 ' | ' 1 ' |... | ' 9 '
Observe que el carcter underscore (_) es tratando como una
letra.
Identificadores:
Un identificador es una secuencia finita de letras y de
dgitos que comienzan con una letra. Los identificadores
pueden
ser
de
cualquier
longitud,
sin
embargo,
los
12 Compiladores. Gua 1
Constantes numricas.
Un integer_constant es una secuencia de dgitos
comenzar con un 0, a menos que sea el nmero 0).
(no debe
integer_constant = digit+
Una constante numrica se debe separar de un identificador o
de una palabra clave.
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.
Strings Constantes.
Una constante de string es una secuencia de los caracteres
incluidos dentro de dos comillas dobles ("). Una constante de
string puede incluir la secuencia \ que representa un
carcter de
comillas doble en la secuencia en la cual
ocurre, tal que no termina el string. La secuencia \n
representa el carcter del NEWLINE, mientras que la secuencia
\ \ representa el carcter del backslash y se puede
incluir en un string tambin. Una secuencia consistente
de un backslash seguido por cualquier carcter a excepcin de
'n', '\ ', o ' " ' es ilegal. Por consiguiente, un string
constante no debe extenderse ms all del extremo
de la
lnea. Un par de /**/ dentro de un string constante no se
trata como comentario.
Operadores
Compiladores. Gua 1 13
Investigacin complementaria.
1) Investigar que es lxico y en qu consiste el anlisis
lxico de un traductor.
2) Investigar que es MICRO C, cules son sus definiciones
lxicas (Identificadores, constantes numricas, constantes
de carcter, operadores, otros smbolos, entre otros).
3) 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.
4) Escribir un programa en MICRO C que calcule el factorial
de un nmero.
5) Investigar con el tutorial de Jflap como implementar
Autmatas Finitos Deterministas (AFD).
14 Compiladores. Gua 1
Hoja de cotejo:
Mquina No:
Docente:
GL:
1
1
Fecha:
EVALUACION
%
CONOCIMIENTO
Del 20
al 30%
APLICACIN
DEL
CONOCIMIENTO
Del 40%
al 60%
1-4
5-7
8-10
Conocimie
nto
deficient
e de los
fundament
os
tericos
Conocimiento
y explicacin
incompleta de
los
fundamentos
tericos
Conocimiento
completo y
explicacin
clara de los
fundamentos
tericos
No tiene
actitud
proactiva
.
Actitud
propositiva y
con
propuestas no
aplicables al
contenido de
la gua.
Tiene actitud
proactiva y sus
propuestas son
concretas.
ACTITUD
Del 15%
al 30%
TOTAL
100%
Nota