Actividad 1 - (Conf). Introducción a Las Técnicas de Compilación
Transcript of Actividad 1 - (Conf). Introducción a Las Técnicas de Compilación
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
1/67
COMPILADORES.
ISUTIC-INFORMATICA15/03/2015
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
2/67
ASNAY GUIROLA GONZALES
MASTER EN INFORMATICA APLICADA
PROFESOR ASISTENTE
PROGRAMACION
INTELIGENCIA ARTIFICIAL
BASE DE DATOS
PROFESOR
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
3/67
CONTENIDOS
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
4/67
Objetivo General : Familiarizar os estudantes
com os processos,tcnicas e ferramentas queintervm no funcionamento e no projecto de
compiladores para utilizao em computadores
digitais modernos
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
5/67
1. Caracterizar las fases del proceso
de compilacin a partir de disear
e implementar un intrprete para
un lenguaje de poca complejidadde forma manual y usando un
generador automtico.
Objetivos Generales. INTRODUC
CINALASIGNA
TURAP3
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
6/67
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
7/67
Bibliografa bsica
[1] T. Parr, Language Implementation
Patterns: Create Your Own Domain-Specificand General programming Languages, The
Pragmatic Bookshelf, 2009.
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
8/67
Bibliografa bsica
[3] R. Brena,Autmatas y lenguajes. Un enfoque
de diseo., Universidad Tcnica de Monterrey,
Mxico, 2003.
[4] A. Aho, M. Lam, R. Sethi, and J. Ullman,
Compilers - Principles Techniques and Tools,Addison Wesley, second ed., (2007).
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
9/67
INTRODUCCIN A LAS TCNICAS DECOMPILACIN
Conceitos Bsicos de Compilao.Compiladores Versus Interpretadores. AEstrutura de um Compilador
15/03/2015
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
10/67
INTRODUCCIN
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
11/67
INTRODUCCIN
Lenguaje de programacinLenguaje natural
Lenguaje de mquina
Comunicacin
101001101
Hola ?
101001101
if(c > 0)
c++;
while(i>0)
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
12/67
Compilacin
INTRODUCCIN
classProcess{
stringname;
voidBegin(){
01101011
11001111
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
13/67
INTRODUCCIN
Lenguaje
Conjunto de smbolos y reglas que permiten la comunicacin,es decir, trasmitir una idea, un mensaje.
Lxico
Conjunto de palabras que forman parte de un lenguajeespecfico.
GramticaConjunto de reglas y principios que gobiernan el uso de unlenguaje determinado; as, cada lenguaje tiene su propiagramtica.
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
14/67
INTRODUCCIN
Sintaxis
Define las formas en que se combinan las palabras para laformacion de frases.
Semntica
Significado, sentido o interpretacin de un determinado
elemento, smbolo, palabra, lenguaje o representacinformal.
Lenguaje de programacinConjunto de smbolos y reglas sintcticas y semnticas quepermiten la comunicacin con un ordenador.
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
15/67
INTRODUCCIN
Lenguaje de mquina
Conjunto de intrucciones y datos, expresados enformato binario, que son ejecutados por el CPU
de un ordenador.
Lenguaje de bajo nivel
Similar al lenguaje de mquina con pequeasmodificaciones nemotcnicas que facilitan suuso, por ejemplo el lenguaje ensamblador.
Lenguaje de mquina10110000 01100001
Lenguaje ensambladorMOV AL, #61h
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
16/67
INTRODUCCIN
Lenguaje de alto nivel
Lenguaje que permite la comunicacin con un computadormediante smbolos convencionales cercanos a un lenguajenatural.
Ejemplos
Pascal Java C++
C # Ruby Python
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
17/67
INTRODUCCIN
Objetivos
Caracterizar los conceptos de traductor,
compilador e intrprete.
Caracterizar la estructura de un compilador,
as como cada una de las fases del proceso de
compilacin.
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
18/67
SUMARIO
Introduccin.1.
Compiladores y Traductores.2.
Estructura de un compilador.3.
Conclusiones.4.
Bibliografa.5.
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
19/67
COMPILADORES Y TRADUCTORES
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
20/67
COMPILADORESYTRADU
CTORES
Traductor
Un traductor es un programa que toma como
entrada un programa escrito en un lenguaje deprogramacin (lenguaje fuente) y produce comosalida un programa en otro lenguaje (lenguajeobjeto).
Cdigofuente
Cdigoobjeto
Traductor
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
21/67
COMPILADORESYTRADU
CTORES
Compilador
Un compilador es un programa que permitetraducir el cdigo fuente (lenguaje de alto nivel)
a otro lenguaje de nivel inferior(tpicamente lenguaje mquina).
Cdigofuente
Compilador
Lenguajede
mquina
Compilacin Ejecucin
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
22/67
COMPILADORESYTRADU
CTORES
Intrprete
Un intrprete es un programa que toma elcdigo fuente, lo analiza y lo ejecutadirectamente.
Cdigo
fuente
IntrpreteEjecucin
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
23/67
Cdigo
fuente
Traductor
Compilador
(MquinaVirtual deJAVA)
Bytescodesalida
Compilador Hbrido
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
24/67
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
25/67
ESTRUCTURA DE UN COMPILADOR
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
26/67
ESTRUCTURADEUN
COMPILADO
R
Cdigofuente
Generacin deCdigo Intermedio
Optimizacin deCdigo Intermedio
Generacin deCdigo Objeto
Cdigo
Objeto
AnlisisLxico
AnlisisSintctico
Anlisis
Semntico
Tokens
rbol Sintctico
Cdigo Intermedio
Cdigo Intermedio Optimizado
T
ABLADESM
BOLOS
G
ESTINDEERRORES
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
27/67
COMPILADORESYTRADU
CTORES
Analizador Lxico (Scanner)
Recibe como entrada una secuencia de smboloso caracteres.Devuelve como salida una secuencia deentidades sintcticas simples denominadastokens o lexemas.
Token
Scanner Parser
NextToken
TABLA DE SMBOLOS
Cdigofuente
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
28/67
Las categoras de tokens pueden variar de
un lenguaje a otro, pero en general sedistinguen las siguientes:
palabras reservadas
identificadores
constantes numricas y literales
operadores demilitadores
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
29/67
COMPILAD
ORESYTRADU
CTORES
Estructura de un Token
Tipo del token: Representa una categorasintctica.Info: Proporciona informacin relacionada con
el token.
Token Lexema
id total
num 60
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
30/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
V
Tabla de smbolos
1
2
34
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
31/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
A
Tabla de smbolos
1
2
34
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
32/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
L
Tabla de smbolos
1
2
34
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
33/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
O
Tabla de smbolos
1
2
34
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
34/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
R
Tabla de smbolos
1
2
34
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
35/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
1
Tabla de smbolos
1
2
34
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
36/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
VALOR1
Tabla de smbolos
1
2
3 id4
< id, 3 >
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
37/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
=
< id, 3 >Tabla de smbolos
1
2
3 id4
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
38/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
=
< id, 3 >< op_as, = >
Tabla de smbolos
1
2
3 id4
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
39/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
V
< id, 3 >< op_as, = >
Tabla de smbolos
1
2
3 id4
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
40/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
A
< id, 3 >< op_as, = >
Tabla de smbolos
1
2
3 id4
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
41/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
L
< id, 3 >< op_as, = >
Tabla de smbolos
1
2
3 id4
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
42/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
O
< id, 3 >< op_as, = >
Tabla de smbolos
1
2
3 id4
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
43/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
R
< id, 3 >< op_as, = >
Tabla de smbolos
1
2
3 id4
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
44/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
2
< id, 3 >< op_as, = >
Tabla de smbolos
1
2
3 id4
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
45/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
VALOR2
Tabla de smbolos
1 id
2
3 id4
< id, 3 >< op_as, = >
< id, 1 >
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
46/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
+
< id, 3 >< op_as, = >
< id, 1 >
Tabla de smbolos
1 id
2
3 id4
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
47/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
+
< id, 3 >< op_as, = >
< id, 1 >
< op_ar, +>
Tabla de smbolos
1 id
2
3 id4
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
48/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
1
Tabla de smbolos
1 id
2
3 id4 const
< id, 3 >< op_as, = >
< id, 1 >
< op_ar, + >< const, 4 >
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
49/67
V A L O R 1 = V A L O R 2 + 1 ;
COMPILAD
ORESYTRADU
CTORES
;
< id, 3 >< op_as, = >
< id, 1 >
< op_ar, + >< const, 4 >< delim, ;>
Tabla de smbolos
1 id
2
3 id4 const
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
50/67
COMPILAD
ORESYTRADU
CTORES
Tabla de smbolos
Es una estructura de datos que posee unaentrada para cada identificador o constantedefinido o utilizado en el programa fuente y susatributos.
Tabla de smbolos
1 valor2 id float2
3 valor1 id float
4 1 const int
float valor2, valor1;
//valor1 = valor2 + 1;
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
51/67
Anlisis lxico
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
52/67
Anlisis lxico
Token
Scanner Parser
NextToken
TABLA DE SMBOLOS
Cdigo
fuente
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
53/67
COMPILAD
ORESYTRADUCTORES
Anlisis sintctico (Parser)
Recibe como entrada la secuencia de tokensgenerada por el scanner.Devuelve como salida si la secuencia de tokens eso no correcta de acuerdo a la definicin sintcticadel lenguaje.[ Agrupa los tokens en una estructura en forma derbol, denominada rbol sintctico. ]
CReglas sintcticas
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
54/67
COMPILAD
ORESYTRADUCTORES
Reglas sintcticas
exp exp + expexp exp * exp
exp idexp const
valor2 + valor3 * 1 valor2 +* valor3
Scanner Scanner
Parser Parser
ExpresinCorrecta!!!
ExpresinIncorrecta!!!
C
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
55/67
COMPILAD
ORESYTRADUCTORES
valor1 = valor2 + valor3 * 1
*
+
=
id1
id2
id3 1
CAnlisis semntico
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
56/67
COMPILAD
ORESYTRADUCTORES
valor1 = valor2 + valor3 * 1
*
+
=
id1
id2
id3
1
Anlisis semntico
Analiza la estructura jerrquica construida por elparser, para tratar de encontrar errores
semnticos y preparar la generacin de cdigo.
EntAReal
C
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
57/67
COMPILAD
ORESYTRADUCTORES
Generacin de cdigo intermedio
El cdigo intermedio debe tener dos caractersticasmuy importantes: ser fcil de producir y fcil detraducir al programa objeto.Se genera a partir de la informacin obtenidadurante el anlisis semntico.
Representaciones de cdigo intermedio
MSIL Java Bytecode
Notacin de cudruplos Notacin polaca Traduccin Sintctica Directa.
CCdigo de 3s direcciones.
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
58/67
COMPILAD
ORESYTRADUCTORES
g
*
+
=
id1
id2
id3
1
intToFloat
(1) temp1 = EntToReal(const4)
(2) temp2 = id3 * temp1
(4) id1 = temp3
(3) temp3 = id2 + temp2
CO ti i i d l di I t di
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
59/67
COMPILAD
ORESYTRADUCTORES
Optimizacin del cdigo Intermedio
La fase de optimizacin se efecta con el objetivode mejorar la eficiencia del cdigo intermedio.
Cdigo intermedio Cdigo Optimizado
(1) temp1 = EntToReal(7)(2) temp2 = id3 * temp1
(3) temp3 = id2 + temp2
(4) id1 = temp3
temp2 = id3 * 7.0
id1 = id2 + temp2
CG i d di bj t
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
60/67
COMPILAD
ORESYTRADUCTORES
Generacin de cdigo objeto
La fase final de un compilador es la de generacin
del cdigo objeto, consistente en cdigo mquina o
cdigo ensamblador.
Cdigo Optimizado Cdigo Objeto
temp2 = id3 * 7.0
id1 = id2 + temp2
MOVF id3, R2MULF #7.0, R2MOVF id2, R1
ADDF R2, R1MOVF R1, id1
C
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
61/67
COMPILAD
ORESYTRADUCTORESTipos de errores
Lxicos Sintcticos
Semnticos Lgicos
Gestin e informacin de errores
Es el encargado de informar al usuario los errores que sepresentan en cualquiera de las componentes.
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
62/67
lexicolgicos (Ejemplo: escribir mal un
nmero, un smbolo no permitido, etc.)
sintcticos (Ejemplo: expresin aritmtica con
parntesis no balanceados)
semnticos (Ejemplo: aplicar un operador a
un operando incompatible)
lgicos o de programacin (Ejemplo: ciclo
infinito)
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
63/67
CONCLUSIONES
C
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
64/67
CONCLUSIONES
Se presentaron dos clasificaciones de lenguajes de
programacin de acuerdo a su complejidad.
Se estudiaron los conceptos de Interprete,
Compilador y Traductor y se mostr una clasificacin
de los Leguajes por el tipo de estrategia de ejecucin.
Se estudiaron, de forma general, cada una de las
fases del proceso de compilacin
Orientacin del Estudio independiente:
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
65/67
Estudiar los epgrafes 1.1, 1.2 y 1.3 del libro
Compilers Principles, techniques, and Tools, A.
V. Aho, J. Ullman.
Leer el artculo The difference betweencompilers and interpreters
p
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
66/67
BIBLIOGRAFA
B
-
7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin
67/67
BIBLIOGRA
FA
Bibliografa
Compilers Principles, techniques, and Tools, A. V. Aho, J.
Ullman. Epigrafes 1.1, 1.2 y 1.3.
The difference between compilers and interpreters,Terence Parr.