Vous êtes sur la page 1sur 14

TEORA DE

LENGUAJES
ESTRUCTURA DE UN COMPILADOR
Ing. Laura Bazn Daz

Estructura de Bloques de un Compilador


Compilador
Tablas
FOR

Anlisis

SCANNER

PARSER

Sntesis
Preparacin
para la
Generacin
Del cdigo.

Tabla
de
Smbolos

Tiras

Ing. Laura Sofa Bazn Daz - UNC

FUENTE

Constantes
Objeto

Generacin
Del cdigo.

Se puede considerar un compilador como


un Conversor o Transformador de tiras de
caracteres: el programa fuente como tira
origen, y el programa objeto como tira
resultante.
En su estructura destaca un proceso de
anlisis y otro de sntesis:

Ing. Laura Sofa Bazn Daz - UNC

Estructura de un Compilador

SNTESIS: Se comienza la obtencin de la tira de


caracteres que formar el programa objeto. Para
ello puede existir: 1)Preparacin para la
generacin del cdigo y luego 2)La generacin del
Cdigo.

Ing. Laura Sofa Bazn Daz - UNC

ANLISIS: Realiza la lectura de la tira de origen.


Tiene dos partes: 1) El explorador o Analizador
Lexicogrfico con la misin de leer el programa
fuente y aglutinar algunos smbolos de estructura
sencilla; 2)Luego el Reconocedor o Analizador
Sintctico mira la estructura sintctica de la
sentencia del programa fuente. Se activan
Rutinas
Semnticas
para
realizar
comprobaciones adicionales.

Si suponemos que el compilador es de una


pasada, entonces se puede admitir una sucesin
temporal de funcionamiento: el reconocedor le
pide al explorador una sentencia fuente, que, una
vez obtenida, analizar sintcticamente, y vista su
correccin, pasa a actuar el generador de cdigo
para traducir la sentencia (ya leda y analizada) a
cdigo objeto. Esta secuencia se vuelve a
comenzar, hasta conseguir agotar todo el
programa fuente

Ing. Laura Sofa Bazn Daz - UNC

La estructura de bloques vista, tiene una


estructura esttica de un Compilador, ya que no
figura en ella ningn aspecto temporal de cmo
funciona.

Estructura de un compilador (de una pasada)


SENTENCIA

RECONOCEDOR

TABLA DE
SMBOLOS

GENERADOR
DE CDIGO

Objeto

Ing. Laura Sofa Bazn Daz - UNC

FUENTE

EXPLORADOR

Ing. Laura Sofa Bazn Daz - UNC

Es muy interesante observar que el


explorador deja annimas las variables
de la sentencia que se est compilando,
pues para examinar su sintaxis no hace
falta el saber exactamente cul es su
nombre concreto en el programa fuente
(Se indican con V en la figura).

Ing. Laura Sofa Bazn Daz - UNC

Luego el reconocedor construye el rbol


sintctico, como veremos, comprobando
que la sentencia tiene una estructura
sintctica correcta. Como subproducto de
este reconocimiento se traduce la sentencia
a un formato o lenguaje interno que en
este ejemplo es la notacin Polaca Inversa.
El generador de cdigo genera fcilmente el
cdigo objeto partiendo de dicho formato
interno, siendo ahora importante el
recordar los nombres autnticos de las
variables del fuente.

COMPILACIN DE UNA
SENTENCIA EJEMPLO

Vel = V0 + Acel . Tiempo

Explorador

V=V+V.V
Resultado del explorador
<sentencia>

<variable>

<expresin>
<expresin> <trmino>
<expresin>
<item>

<item>

<factor>

<factor>

<factor>

Reconocedor

Ing. Laura Sofa Bazn Daz - UNC

<sentencia de asignacin>

9
V
=
v
+ v
.
Anlisis Sintctico: La sentencia es correcta

VVVV.+=
Sentencia convertida a notacin polaca inversa como
subproducto del reconocedor
ACEL
TIEMPO
V0
VEL

El generador de cdigo genera estas


4 instrucciones para una mquina
con acumulador.

Generador

de cdigo
Ing. Laura Sofa Bazn Daz - UNC

LOAD
MULT
ADD
STORE

10

NOTACION DE BRATMAN O EN T:
Representa grficamente los tres lenguajes
implicados en un compilador: el fuente, el
objeto y el lenguaje en que se ha escrito el
compilador.
Nombre del Compilador
LF (Lenguaje
Fuente)

LO (Lenguaje
Objeto)
LC (Lenguaje
del
Compilador)

Ing. Laura Sofa Bazn Daz - UNC

Notaciones Grficas para describir Realizaciones

11

Ing. Laura Sofa Bazn Daz - UNC

LF: Es el lenguaje origen que traduce el


compilador.
LO: Es el lenguaje deseado o meta de la
traduccin
LC: Es el lenguaje en que est escrito el
compilador.
Supongamos que se ha desarrollado un
compilador COBOL escrito en FORTRAN que
genera cdigo de mquina 370.

12

COBOL

Cdigo
370
Compilador de
FORTRAN
Cdigo 370

FORTRAN

COBOL

Compilador de
COBOL
resultante

Cdigo
370

Cdigo 370

Primero necesitamos traducir este compilador a


cdigo 370, para que lo pueda usar un compilador
FORTRAN escrito en cdigo 370 y que produce
cdigo 370

Ing. Laura Sofa Bazn Daz - UNC

Compilador de
COBOL escrito
en FORTRAN

FORTRAN

Cdigo
370

13

Cdigo
370

COBOL

FORTRAN

Cdigo
370

FORTRAN

Combinacin de varios
diagramas en T

Cdigo 370

Cdigo
370

Cdigo 370
Ing. Laura Sofa Bazn Daz - UNC

COBOL

14

Vous aimerez peut-être aussi