Professional Documents
Culture Documents
Y ANLISIS
NUMRICO
PROCESADORES
R C A R DE LENGUAJES
G AJ
INGENIERA INFORMTICA
PRIMER
R M R CURSO
C RS DE SSEGUNDO
G N
C
CICLO
C
SEGUNDO CUATRIMESTRE
Ingeniera Informtica
Procesadores de Lenguajes
PROGRAMA
TEMA I.- INTRODUCCIN
TEMA II.- ANLISIS LEXICOGRFICO
TEMA III.III - FUNDAMENTOS TERICOS
DEL ANLISIS SINTCTICO
TEMA IV.- ANLISIS
SINTCTICO
DESCENDENTE
TEMA V.
V - ANLISIS SINTCTICO ASCENDENTE
TEMA VI.- TRADUCCIN BASADA EN LA SINTAXIS
Universidad de Crdoba
Procesadores de Lenguajes
Procesadores de Lenguajes
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9L algoritmos
9Los
l it
permiten
it resolver
l
l problemas
los
bl
d computacin
de
t i
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9L algoritmos
9Los
l it
permiten
it resolver
l
l problemas
los
bl
d computacin
de
t i
9 Programa fuente: algoritmo escrito en un lenguaje de programacin
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9L algoritmos
9Los
l it
permiten
it resolver
l
l problemas
los
bl
d computacin
de
t i
9 Programa fuente: algoritmo escrito en un lenguaje de programacin
9 Los programas fuentes no pueden ser ejecutados directamente por los ordenadores
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9L algoritmos
9Los
l it
permiten
it resolver
l
l problemas
los
bl
d computacin
de
t i
9 Programa fuente: algoritmo escrito en un lenguaje de programacin
9 Los programas fuentes no pueden ser ejecutados directamente por los ordenadores
9 Los ordenadores slo ejecutan cdigo escrito en lenguaje mquina
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9L algoritmos
9Los
l it
permiten
it resolver
l
l problemas
los
bl
d computacin
de
t i
9 Programa fuente: algoritmo escrito en un lenguaje de programacin
9 Los programas fuentes no pueden ser ejecutados directamente por los ordenadores
9 Los ordenadores slo ejecutan cdigo escrito en lenguaje mquina
9 Problema: transformar el programa fuente en cdigo ejecutable
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9L algoritmos
9Los
l it
permiten
it resolver
l
l problemas
los
bl
d computacin.
de
t i
9 Programa fuente: algoritmo escrito en un lenguaje de programacin.
9 Los programas fuentes no pueden ser ejecutados directamente por los ordenadores.
9 Los ordenadores slo ejecutan cdigo escrito en lenguaje mquina.
9 Problema: transformar el programa fuente en cdigo ejecutable.
f
Programa
g
fuente
f
Transformador
g ejecutable
j
Cdigo
10
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Existen
E i t dos
d tipos
ti de
d transformacin:
t
f
i
11
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Existen
E i t dos
d tipos
ti de
d transformacin:
t
f
i
Traduccin
Interpretacin
12
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Existen
E i t dos
d tipos
ti de
d transformacin:
t
f
i
Traduccin
Un programa fuente (alto nivel) es convertido en cdigo ejecutable
(bajo nivel) que puede ser ejecutado independientemente.
13
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Traduccin
T d i
Programa fuente
Traductor
14
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Traduccin
T d i
Programa fuente
Traductor
Errores de traduccin
15
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Traduccin
T d i
Programa fuente
Traductor
Cdigo ejecutable
16
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Traduccin
T d i
Datos de entrada
Programa fuente
Traductor
Cdigo ejecutable
17
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Traduccin
T d i
Datos de entrada
Programa fuente
Traductor
Cdigo ejecutable
18
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Traduccin
T d i
Datos de entrada
Programa fuente
Traductor
Cdigo ejecutable
Resultados
19
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Existen
E i t dos
d tipos
ti de
d transformaciones
t
f
i
Traduccin
Interpretacin o simulacin: consta de tres fases que se repiten
sucesivamente
20
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Existen
E i t dos
d tipos
ti de
d transformaciones
t
f
i
Traduccin
Interpretacin o simulacin: consta de tres fases que se repiten
sucesivamente
1 Anlisis del cdigo fuente para determinar la siguiente sentencia a
1.
ejecutar.
21
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Existen
E i t dos
d tipos
ti de
d transformaciones
t
f
i
Traduccin
Interpretacin o simulacin: consta de tres fases que se repiten
sucesivamente
1 Anlisis del cdigo fuente para determinar la siguiente sentencia a
1.
ejecutar.
2. G
Generacin del cdigo
g que
q se ha de ejecutar.
j
22
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Existen
E i t dos
d tipos
ti de
d transformaciones
t
f
i
Traduccin
Interpretacin o simulacin: consta de tres fases que se repiten
sucesivamente
1 Anlisis del cdigo fuente para determinar la siguiente sentencia a
1.
ejecutar.
2. G
Generacin del cdigo
g que
q se ha de ejecutar.
j
3. Ejecucin del cdigo generado.
23
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Interpretacin
I t
t i
Programa fuente
Intrprete
24
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Interpretacin
I t
t i
Programa fuente
Intrprete
25
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Interpretacin
I t
t i
Intrprete
26
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Interpretacin
I t
t i
Programa fuente
Intrprete
Resultados
Errores de ejecucin
27
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Interpretacin
I t
t i
Programa fuente
Intrprete
Resultados
28
Procesadores de Lenguajes
TRADUCCIN
E INTEPRETACIN
29
Procesadores de Lenguajes
TRADUCCIN
E INTEPRETACIN
Traduccin
Independencia:
El cdigo generado se puede
ejecutar independientemente del
programa fuente y del traductor.
Se traduce una vez y se ejecuta
muchas
h veces.
Interpretacin
Dependencia:
El cdigo generado slo se
ppuede ejecutar
j
con el
intrprete y el programa
fuente.
l
Se interpreta y ejecuta a la
vez.
30
Procesadores de Lenguajes
TRADUCCIN
E INTEPRETACIN
Traduccin
Interpretacin
Independencia
Dependencia
Necesidades de memoria:
El cdigo generado se ha de
almacenar en memoria.
El cdigo
di generado
d no se
almacena en memoria.
31
Procesadores de Lenguajes
TRADUCCIN
E INTEPRETACIN
Traduccin
Interpretacin
Independencia
Dependencia
Necesidades de memoria
Eficiencia
Menos
M
eficiencia
fi i i
El cdigo se ha de volver a
generar para volver a ser
ejecutado.
32
Procesadores de Lenguajes
TRADUCCIN
E INTEPRETACIN
Traduccin
Interpretacin
Independencia
Dependencia
Necesidades de memoria
Eficiencia
Menos
M
eficiencia
fi i i
Global
Local
P
Posee una visin
i i completa
l del
dl
programa pudiendo generar
mensajes de error ms detallados.
33
Procesadores de Lenguajes
TRADUCCIN
E INTEPRETACIN
Traduccin
Interpretacin
Independencia
Dependencia
Necesidades de memoria
Eficiencia
Menos
M
eficiencia
fi i i
Global
Local
No
N iinteractividad
i id d
Interactividad
d d
34
Procesadores de Lenguajes
TRADUCCIN
E INTEPRETACIN
Traduccin
Interpretacin
Independencia
Dependencia
Necesidades de memoria
Eficiencia
Menos
M
eficiencia
fi i i
Global
Local
No
N iinteractividad
i id d
Interactividad
d d
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Combinacin
C bi i de
d la
l traduccin
t d i e interpretacin:
i t
t i son procesos complementarios
l
t i
36
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Combinacin
C bi i de
d la
l traduccin
t d i e interpretacin:
i t
t i
Interpretacin + traduccin:
Se facilita la depuracin del cdigo: la interpretacin permite la
interaccin con el programa durante su desarrollo.
El cdigo depurado permite generar cdigo ejecutable ms eficiente.
eficiente
37
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Combinacin
C bi i de
d la
l traduccin
t d i e interpretacin:
i t
t i
Interpretacin + traduccin:
Se facilita la depuracin: la interpretacin permite la interaccin
con el programa durante su desarrollo.
El cdigo depurado permite generar cdigo ejecutable ms eficiente.
eficiente
Traduccin + interpretacin:
El programa ffuente se traduce
d a cdigo
di intermedio.
i
di
El cdigo intermedio puede ser interpretado en diferentes entornos
de ejecucin.
ejecucin
V.g.: Java, C#,
38
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Tipos de lenguajes
39
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Tipos de lenguajes
Lenguajes interpretados:
Utilizan un intrprete
p ppara ejecutar
j
sus pprogramas.
g
V.g.: APL, Lisp, Scheme, Prolog, Java, Smalltalk, etc.
40
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Tipos de lenguajes
Lenguajes interpretados:
Utilizan un intrprete
p ppara ejecutar
j
sus pprogramas.
g
Lenguajes compilados:
Utilizan un traductor denominado compilador
compilador para generar el
programa ejecutable.
V.g.: Fortran, Pascal, Ada, C, C++
41
Procesadores de Lenguajes
TRADUCCIN E INTEPRETACIN
9 Tipos de lenguajes
Lenguajes interpretados:
Utilizan un intrprete
p ppara ejecutar
j
sus pprogramas.
g
Lenguajes compilados:
Utilizan un traductor denominado compilador
compilador para generar el
programa ejecutable.
No es una clasificacin excluyente: existen lenguajes que poseen intrpretes
y compiladores:
Intrprete: utilizado para el desarrollo, depuracin y puesta a punto.
Compilador: genera el programa ejecutable.
V. g.: Visual Basic, Builder C++, etc.
42
Procesadores de Lenguajes
43
Procesadores de Lenguajes
TIPOS DE TRADUCTORES
9 Preprocesador
P
d
9 Compilador
9 Ensamblador
9 Enlazador (linker)
9 Cargador (loader)
44
Procesadores de Lenguajes
TIPOS DE TRADUCTORES
9 Preprocesador
P
d
Programa inicial escrito en un lenguaje de alto nivel extendido
Programa final escrito en un lenguaje de alto nivel estndar
V.g.: cpp es un preprocesador del lenguaje C que realiza las siguientes
acciones:
Expandir macros: #define PI 3.141592
Incluir
I l i ficheros:
fi h
#i l d <stdio.h>
#include
di h
Eliminar comentarios: /* Men principal */
Etc.
Nota: tambin existen preprocesadores para embellecer el programa fuente.
45
Procesadores de Lenguajes
TIPOS DE TRADUCTORES
9 Preprocesador
P
d
9 Compilador
Programa inicial escrito en un lenguaje de alto nivel
Programa final escrito en un lenguaje de bajo nivel (mquina o ensamblador).
46
Procesadores de Lenguajes
TIPOS DE TRADUCTORES
9 Preprocesador
P
d
9 Compilador
9 Ensamblador
Programa inicial escrito en lenguaje ensamblador
Programa final escrito en cdigo mquina
Nota: el ensamblador es un caso particular de compilador.
47
Procesadores de Lenguajes
TIPOS DE TRADUCTORES
9 Preprocesador
P
d
9 Compilador
9 Ensamblador
9 Enlazador (linker)
Programa inicial escrito en cdigo reubicable (posiciones de memoria relativas)
Programa final escrito en cdigo mquina absoluto o ejecutable
Notas:
Adems incluye el cdigo de las funciones de las bibliotecas utilizadas por
el programa fuente.
Algunas veces genera cdigo reubicable.
48
Procesadores de Lenguajes
TIPOS DE TRADUCTORES
9 Preprocesador
P
d
9 Compilador
9 Ensamblador
9 Enlazador
9 Cargador (loader):
Programa inicial escrito en cdigo reubicable
Programa final escrito en cdigo mquina ejecutable
Nota: no suele ser un programa independiente.
49
Procesadores de Lenguajes
TIPOS DE TRADUCTORES
9 Combinacin
C bi i de
d los
l ti
tipos de
d traductores
t d t
50
Procesadores de Lenguajes
TIPOS DE TRADUCTORES
9 Combinacin
C bi i de
d los
l ti
tipos de
d traductores
t d t
51
Procesadores de Lenguajes
TIPOS DE TRADUCTORES
9 Combinacin
C bi i de
d los
l ti
tipos de
d traductores
t d t
52
Procesadores de Lenguajes
TIPOS DE TRADUCTORES
9 Combinacin
C bi i de
d los
l ti
tipos de
d traductores
t d t
Procesadores de Lenguajes
TIPOS DE TRADUCTORES
9 Combinacin
C bi i de
d los
l ti
tipos de
d traductores
t d t
Ensamblador
Procesadores de Lenguajes
TIPOS DE TRADUCTORES
9 Combinacin
C bi i de
d los
l ti
tipos de
d traductores
t d t
Ensamblador
Cdigo mquina reubicable
Compilador
Procesadores de Lenguajes
TIPOS DE TRADUCTORES
9 Combinacin
C bi i de
d los
l ti
tipos de
d traductores
t d t
Compilador
Ensamblador
Enlazador
Preprocesador
Biblioteca
de
funciones
(cdigo
reubicable)
56
Procesadores de Lenguajes
TIPOS DE TRADUCTORES
9 Combinacin
C bi i de
d los
l ti
tipos de
d traductores
t d t
Enlazador
Compilador
Ensamblador
Preprocesador
Biblioteca
de
funciones
(cdigo
reubicable)
57
Procesadores de Lenguajes
58
Procesadores de Lenguajes
59
Procesadores de Lenguajes
60
Procesadores de Lenguajes
61
Procesadores de Lenguajes
62
Procesadores de Lenguajes
63
Procesadores de Lenguajes
Procesadores de Lenguajes
65
Procesadores de Lenguajes
66
Procesadores de Lenguajes
67
Procesadores de Lenguajes
68
Procesadores de Lenguajes
69
Procesadores de Lenguajes
70
Procesadores de Lenguajes
71
Procesadores de Lenguajes
72
Procesadores de Lenguajes
73
Procesadores de Lenguajes
Procesadores de Lenguajes
75
Procesadores de Lenguajes
P
Programa
fuente
f t
A li i lxico
Anlisis
l i
Componentes lxicos
Administrador
de la tabla
Gestor de errores
G
de smbolos
76
Procesadores de Lenguajes
P
Programa
fuente
f t
A li i lxico
Anlisis
l i
Anlisis sintctico
Administrador
de la Tabla
rbol sintctico
Gestor de errores
G
de smbolos
77
Procesadores de Lenguajes
P
Programa
fuente
f t
A li i lxico
Anlisis
l i
Anlisis sintctico
Administrador
de smbolos
de la Tabla
Anlisis semntico
Gestor de errores
G
78
Procesadores de Lenguajes
P
Programa
fuente
f t
A li i lxico
Anlisis
l i
Anlisis
l sintctico
Administrador
de smbolos
de la Tabla
Anlisis semntico
Generacin de cdigo intermedio
Gestor de errores
Cdigo intermedio
79
Procesadores de Lenguajes
P
Programa
fuente
f t
A li i lxico
Anlisis
l i
Anlisis
l sintctico
Administrador
de smbolos
de la Tabla
Anlisis semntico
Generacin de cdigo intermedio
Gestor de errores
Procesadores de Lenguajes
P
Programa
fuente
f t
A li i lxico
Anlisis
l i
Anlisis
l sintctico
Administrador
de smbolos
de la Tabla
Anlisis semntico
Generacin de cdigo intermedio
Gestor de errores
Generacin de cdigo
Cdigo objeto
81
Procesadores de Lenguajes
P
Programa
fuente
f t
A li i lxico
Anlisis
l i
Anlisis sintctico
de la Tabla
G
Generacin
i de
d cdigo
di intermedio
i
di
Gestor de errores
G
de smbolos
A li i semntico
Anlisis
ti
Administrador
Generacin de cdigo
Optimizacin de cdigo
Programa objeto
82
Procesadores de Lenguajes
Unix
Pascal
Linux
Fortran
Windows
Ada
Mac OS
83
Procesadores de Lenguajes
Anlisis lxico
Anlisis sintctico
Parte frontal
(Front end)
Anlisis semntico
Generacin de
d cdigo
d intermedio
d
O ti i i del
Optimizacin
d l cdigo
di intermedio
i t
di
Generacin
i de
d cdigo
di
Parte trasera
(Back end)
Optimizacin de cdigo
84
Procesadores de Lenguajes
Parte frontal
de
d C
Parte frontal
Pascal de Pascal
Fortran
Parte frontal
de Fortran
Ada Parte frontal
d Ada
de
Ad
D
I
G
O
I
N
T
E
R
M
E
D
I
O
Parte trasera
de Unix
Parte trasera
de Linux
Unix
Linux
Parte trasera
de Windows
Windows
Parte trasera
de M
Mac OSS
Mac OS
85
Procesadores de Lenguajes
86
Procesadores de Lenguajes
87
Procesadores de Lenguajes
88
Procesadores de Lenguajes
P
Programa
fuente
f t
A li i lxico
Anlisis
l i
Componentes lxicos
Administrador
de la tabla
Gestor de errores
G
de smbolos
89
Procesadores de Lenguajes
90
Procesadores de Lenguajes
91
Procesadores de Lenguajes
92
Procesadores de Lenguajes
Programa fuente
Analizador lxico
Componentes lxicos
93
Procesadores de Lenguajes
Procesadores de Lenguajes
Id tifi d r dividendo
Identificador:
di id d
Smbolo de asignacin: =
Parntesis izquierdo: (
Identificador: divisor
Identificador: divisor
Operador
d relacional
l i l de
d DISTINTO:
D T NT !=
!
Identificador: cociente
Nmero: 0.0
Parntesis
P t i derecho:
d h )
Identificador:
f
resto
Delimitador de fin de sentencia: ;
95
Procesadores de Lenguajes
Nombre
cociente
dividendo
Atributo 1
Atributo 2
divisor
resto
96
Procesadores de Lenguajes
Procesadores de Lenguajes
98
Procesadores de Lenguajes
P
Programa
fuente
f t
A li i lxico
Anlisis
l i
Anlisis
l sintctico
Administrador
de la Tabla
rbol
sintctico
Gestor de errores
G
de smbolos
99
Procesadores de Lenguajes
Objetivos:
Comprobar la sintaxis del cdigo fuente: utiliza las reglas
gramaticales del lenguaje fuente y los componentes lxicos.
Generar
G
una representacin
i jerrquica
j i (figurada):
(fi
d ) rbol
b l
sintctico.
100
Procesadores de Lenguajes
IF
if
<condicin>
<sentencia>
101
Procesadores de Lenguajes
IF
if
<condicin>
<sentencia>
!=
)
<sentencia de asignacin>
g
FIN DE SENTENCIA
102
Procesadores de Lenguajes
IF
if
<condicin>
<sentencia>
!=
IDENTIFICADOR
divisor
NMERO
0.0
<sentencia de asignacin>
g
FIN DE SENTENCIA
103
Procesadores de Lenguajes
IF
if
<condicin>
<sentencia>
!=
IDENTIFICADOR
divisor
NMERO
0.0
<sentencia de asignacin>
g
FIN DE SENTENCIA
IDENTIFICADOR
dividendo
;
ASIGNACIN
=
<expresin>
104
Procesadores de Lenguajes
IF
if
<condicin>
<sentencia>
!=
IDENTIFICADOR
divisor
NMERO
0.0
<sentencia de asignacin>
g
FIN DE SENTENCIA
IDENTIFICADOR
dividendo
;
ASIGNACIN
=
<expresin>
105
Procesadores de Lenguajes
IF
if
<condicin>
<sentencia>
!=
IDENTIFICADOR
divisor
<sentencia de asignacin>
g
FIN DE SENTENCIA
NMERO
0.0
IDENTIFICADOR
dividendo
ASIGNACIN
=
<expresin>
MULTIPLICACIN
<expresin>
IDENTIFICADOR
resto
t
106
Procesadores de Lenguajes
IF
if
<condicin>
<sentencia>
!=
IDENTIFICADOR
<sentencia de asignacin>
g
FIN DE SENTENCIA
NMERO
0.0
divisor
IDENTIFICADOR
dividendo
ASIGNACIN
=
<expresin>
MULTIPLICACIN
<expresin>
IDENTIFICADOR
resto
t
IDENTIFICADOR
IDENTIFICADOR
divisor
cociente
107
Procesadores de Lenguajes
IF
<condicin>
<sentencia>
NMERO
<sentencia de asignacin>
g
FIN DE SENTENCIA
IDENTIFICADOR
ASIGNACIN
<expresin>
IDENTIFICADOR
MULTIPLICACIN
<expresin>
IDENTIFICADOR
IDENTIFICADOR
108
Procesadores de Lenguajes
109
Procesadores de Lenguajes
P
Programa
fuente
f t
A li i lxico
Anlisis
l i
Anlisis
l sintctico
Administrador
Anlisis
l semntico
de la Tabla
de smbolos
rbol
sintctico anotado
Gestor de errores
G
110
Procesadores de Lenguajes
Procesadores de Lenguajes
112
Procesadores de Lenguajes
113
Procesadores de Lenguajes
114
Procesadores de Lenguajes
P
Programa
fuente
f t
A li i lxico
Anlisis
l i
Anlisis sintctico
de la Tabla
Gestor de errores
G
de smbolos
A li i semntico
Anlisis
ti
Administrador
Cdi intermedio
Cdigo
i
di
115
Procesadores de Lenguajes
Cdigo fuente
116
Procesadores de Lenguajes
117
Procesadores de Lenguajes
118
Procesadores de Lenguajes
S t i
Sntesis
Procesadores de Lenguajes
120
Procesadores de Lenguajes
P
Programa
fuente
f t
A li i lxico
Anlisis
l i
Anlisis sintctico
Administrador
de smbolos
de la Tabla
Anlisis semntico
Generacin de cdigo intermedio
Gestor de errores
Procesadores de Lenguajes
122
Procesadores de Lenguajes
101. t1 := divisor
di i * cociente
i
101 t1 := divi
101.
divisorr * cociente
iente
102. t2 := t1 + resto
103. dividendo := t2
103.
104.
123
Procesadores de Lenguajes
124
Procesadores de Lenguajes
P
Programa
fuente
f t
A li i lxico
Anlisis
l i
Anlisis sintctico
Administrador
de smbolos
de la Tabla
Anlisis semntico
Generacin de cdigo intermedio
Gestor de errores
Generacin de cdigo
Cdigo objeto
125
Procesadores de Lenguajes
Procesadores de Lenguajes
Procesadores de Lenguajes
128
Procesadores de Lenguajes
P
Programa
fuente
f t
A li i lxico
Anlisis
l i
Anlisis sintctico
de la Tabla
G
Generacin
i de
d cdigo
di intermedio
i t
di
Gestor de errores
G
de smbolos
A li i semntico
Anlisis
ti
Administrador
Generacin de cdigo
Optimizacin de cdigo
Programa objeto
129
Procesadores de Lenguajes
Procesadores de Lenguajes
131
Procesadores de Lenguajes
Procesadores de Lenguajes
102. JE 108
102. JE 108
107.
7 M
MOV
V R1,
R , ddividendo
vd d
108.
108.
133
Procesadores de Lenguajes
134
Procesadores de Lenguajes
135
Procesadores de Lenguajes
P
Programa
fuente
f t
A li i lxico
Anlisis
l i
Anlisis sintctico
de la Tabla
G
Generacin
i de
d cdigo
di intermedio
i t
di
Gestor de errores
G
de smbolos
A li i semntico
Anlisis
ti
Administrador
Generacin de cdigo
Optimizacin de cdigo
Programa objeto
136
Procesadores de Lenguajes
Procesadores de Lenguajes
138
Procesadores de Lenguajes
N b
Nombre
dato
Tipo
Ti
entero
Valor
V
l
3
139
Procesadores de Lenguajes
140
Procesadores de Lenguajes
141
Procesadores de Lenguajes
142
Procesadores de Lenguajes
P
Programa
fuente
f t
A li i lxico
Anlisis
l i
Anlisis sintctico
de la Tabla
G
Generacin
i de
d cdigo
di intermedio
i t
di
Gestor de errores
G
de smbolos
A li i semntico
Anlisis
ti
Administrador
Generacin de cdigo
Optimizacin de cdigo
Programa objeto
143
Procesadores de Lenguajes
Procesadores de Lenguajes
Procesadores de Lenguajes
Procesadores de Lenguajes
147
Procesadores de Lenguajes
148
Procesadores de Lenguajes
Procesadores de Lenguajes
150
Procesadores de Lenguajes
COMPILADORES
9 Algunas partes del proceso de traduccin pueden ser generadas automticamente
9 Tipos de herramientas de generacin automtica:
Generadores automticos de analizadores lxicos
Generadores
G
d
automticos
i de
d analizadores
li d
sintcticos
i i
Generadores automticos de cdigo intermedio
Generadores automticos de cdigo
Mquinas de optimizacin de cdigo
151
Procesadores de Lenguajes
COMPILADORES
9 Tipos de herramientas de generacin automtica:
Generadores automticos de analizadores lxicos
Generadores automticos de analizadores sintcticos
Generadores
G
d
automticos
i de
d cdigo
di intermedio
i
di
Generadores automticos de cdigo
Mquinas de optimizacin de cdigo
152
Procesadores de Lenguajes
COMPILADORES
9 Tipos de herramientas de generacin automtica:
Generadores automticos de analizadores lxicos
Las expresiones regulares pueden denotar a los componentes bsicos
de los lenguajes
g j de pprogramacin:
g
Identificadores
Nmeros
Operadores aritmticos, lgicos y relacionales
Smbolos
S b l de
d puntuacin
t a i
Comentarios
Etc.
153
Procesadores de Lenguajes
COMPILADORES
9 Tipos de herramientas de generacin automtica:
Generadores automticos de analizadores lxicos
Las expresiones regulares pueden denotar a los componentes bsicos
de los lenguajes
g j de pprogramacin.
g
Existen herramientas automticas para generar analizadores lxicos a
partir de las expresiones regulares:
Lex
Flex
PCLex
ANTLR
Etc.
154
Procesadores de Lenguajes
COMPILADORES
9 Tipos de herramientas de generacin automtica:
Generadores automticos de analizadores lxicos
V.g.: Lex
nombre.l
nombre l
Fichero con
expresiones
p
regulares
g
Lex
lex yy c
lex.yy.c
Analizador lxico
escrito en lenguaje C
Procesadores de Lenguajes
COMPILADORES
9 Tipos de herramientas de generacin automtica:
Generadores automticos de analizadores lxicos
Generadores automticos de analizadores sintcticos
Generadores
G
d
automticos
i de
d cdigo
di intermedio
i
di
Generadores automticos de cdigo
Mquinas de optimizacin de cdigo
156
Procesadores de Lenguajes
COMPILADORES
9 Tipos de herramientas de generacin automtica:
Generadores automticos de analizadores sintcticos
Las gramticas de contexto libre permiten generar casi todas las
estructuras sintcticas de los lenguajes
g j de pprogramacin.
g
Existen herramientas automticas para generar analizadores
sintcticos a partir de las gramticas de contexto libre:
YACC o Bison
LLGEN
G
CUP
ANTLR
Etc.
157
Procesadores de Lenguajes
COMPILADORES
9 Tipos de herramientas de generacin automtica:
Generadores automticos de analizadores sintcticos
V.g.: YACC, Yet Another Compiler Compiler
nombre.y
Fichero con una gramtica
de contexto libre
YACC
y.tab.c
Analizador
A
li d sintctico
i t ti
escrito en lenguaje C
158
Procesadores de Lenguajes
COMPILADORES
9 Tipos de herramientas de generacin automtica:
Generadores automticos de analizadores lxicos
Generadores automticos de analizadores sintcticos
Generadores
G
d
automticos
i de
d cdigo
di intermedio
i
di
Generadores automticos de cdigo
Mquinas de optimizacin de cdigo
159
Procesadores de Lenguajes
COMPILADORES
9 Tipos de herramientas de generacin automtica:
Generadores automticos de cdigo intermedio
Suelen estar integrados en los analizadores sintcticos
Hay
H ddos versiones
i
que incorporan
i
acciones
i
semnticas
i de
d generacin
i
de cdigo intermedio:
Definiciones basadas en la sintaxis
Esquemas de traduccin
Al crear
r ar ell rbol
rb l sintctico,
i t ti se ejecutan
j ta las
la acciones
a i
semnticas
ti a de
d
generacin de cdigo intermedio
160
Procesadores de Lenguajes
COMPILADORES
9 Tipos de herramientas de generacin automtica:
Generadores automticos de analizadores lxicos
Generadores automticos de analizadores sintcticos
Generadores
G
d
automticos
i de
d cdigo
di intermedio
i
di
Generadores automticos de cdigo
Mquinas de optimizacin de cdigo
161
Procesadores de Lenguajes
COMPILADORES
9 Tipos de herramientas de generacin automtica:
Generadores automticos de cdigo
Se utilizan transformaciones basadas en reglas que tienen en cuenta:
Las
L caractersticas
i de
d las
l sentencias
i y operaciones
i
d l cdigo
del
di
intermedio
Las caractersticas de la mquina donde se va a ejecutar el cdigo
objeto:
- Acceso a las variables: almacenamiento en registros de
mquina en memoria esttica,
mquina,
esttica en la pila o el montn
- Operaciones bsicas disponibles
Etc.
- E
Las reglas utilizan plantillas de conversin.
162
Procesadores de Lenguajes
COMPILADORES
9 Tipos de herramientas de generacin automtica:
Generadores automticos de analizadores lxicos
Generadores automticos de analizadores sintcticos
Generadores
G
d
automticos
i de
d cdigo
di intermedio
i
di
Generadores automticos de cdigo
Mquinas de optimizacin de cdigo
163
Procesadores de Lenguajes
COMPILADORES
9 Tipos de herramientas de generacin automtica:
Mquinas de optimizacin de cdigo
Se utilizan dispositivos para el anlisis del flujo de datos.
Se
S recoge informacin
i f
i sobre
b la
l forma
f
en que los
l valores
l
se transmiten
i
de una parte a otra del programa
Ejemplos:
Anlisis de uso siguiente o de vida: se comprueba en qu
lugares se usa una variable y, especialmente, cundo no se va a
utilizar ms.
ms
Si una variable es utilizada frecuentemente entonces es preferible
almacenarla en un registro de mquina.
Etc.
164
Procesadores de Lenguajes
165
Procesadores de Lenguajes
O
I
166
Procesadores de Lenguajes
U
U
167
Procesadores de Lenguajes
U
C
168
Procesadores de Lenguajes
il d cruzado,
d porque se
genera cdigo para una mquina diferente a la que se ha compilado
9 Ejemplo:
Lenguaje fuente: Lenguaje C
Lenguaje de implementacin: Lenguaje mquina de Unix (U)
Lenguaje objeto: Lenguaje mquina de Linux (L)
L
U
169
Procesadores de Lenguajes
M
M
Dificultad:
f
es muyy difcil
f escribir un programa
p g
(compilador)
( p
) directamente en
cdigo mquina
170
Procesadores de Lenguajes
171
Procesadores de Lenguajes
M
1
172
Procesadores de Lenguajes
M
S
2
173
Procesadores de Lenguajes
M
S
2
M
M
M
M
Compilador final
1
174
Procesadores de Lenguajes
B
I
B
N
M
175
Procesadores de Lenguajes
B
I
B
N
M
176
Procesadores de Lenguajes
M
M
177
Procesadores de Lenguajes
L3
M
M
Compilador final
178
Procesadores de Lenguajes
L1
L2
L3
L1
L2
3
179
Procesadores de Lenguajes
L2
L2
M
L1
2
L1
M
M
1
M
M
4
180
Procesadores de Lenguajes
L3
L3
M
L2
3
L2
M
M
4
M
Compilador final
181
Procesadores de Lenguajes
Compilador original
Compilador final
182
Procesadores de Lenguajes
N
L
1
183
Procesadores de Lenguajes
N
L
1
L
M
Compilador original
N
M
2
184
Procesadores de Lenguajes
N
L
1
L
M
2
N
N
Compilador final
185
Procesadores de Lenguajes
1
L
1
L
N
Compilador original
N
L
L
M
L
M
N
M
2
N
N
Compilador
p
final
f
186
Procesadores de Lenguajes
1
L
1
L
N
N
L
L
M
L
M
Compilador original
N
M
N
N
Compilador
p
final
f
2
187
UNIVERSIDAD DE CRDOBA
ESCUELA POLITCNICA SUPERIOR
DEPARTAMENTO DE INFORMTICA
Y ANLISIS
NUMRICO
PROCESADORES
R C A R DE LENGUAJES
G AJ
INGENIERA INFORMTICA
PRIMER
R M R CURSO
C RS DE SSEGUNDO
G N
C
CICLO
C
SEGUNDO CUATRIMESTRE