Está en la página 1de 24

1

Compiladores e Intrpretes 1
BLOQUE 1
BLOQUE 1: FUNDAMENTOS
TEMA 1: INTRODUCCIN
Compiladores e Intrpretes 2
Motivacin
Sentar las bases necesarias para la construccin
de compiladores
2
Compiladores e Intrpretes 3
1. Lenguajes
2. Otras definiciones I
3. Gramticas formales
4. Tipos de gramticas
5. Otras definiciones II
6. Traduccin
7. Fases del compilador
8. Contexto del compilador
ndice
Compiladores e Intrpretes 4
1. Lenguajes
2. Otras definiciones I
3. Gramticas formales
4. Tipos de gramticas
5. Otras definiciones I
6. Traduccin
7. Fases del compilador
8. Contexto del compilador
ndice
3
Compiladores e Intrpretes 5
Lenguajes
Toda comunicacin involucra la
utilizacin de un de un lenguaje.
Ejemplo:
Las personas utilizan diferentes idiomas
(lenguajes naturales)
Nos comunicamos con las mquinas
(lenguajes artificiales)
Compiladores e Intrpretes 6
Lenguajes
Lenguajes naturales:
Evolucionan
Sus reglas se crean a posteriori
Lenguajes artificiales:
No evolucionan
Siguen una forma preestablecida
4
Compiladores e Intrpretes 7
Lenguajes
Def. Lenguaje: conjunto de palabras
compuestas por smbolos de un
alfabeto.
Formalmente se designa con la letra L.
Ejemplo: idioma espaol
Compiladores e Intrpretes 8
Lenguajes
Def. Alfabeto: conjunto de smbolos
finito y no vaco.
Formalmente se designa con .
Ejemplo:
=[a-zA-Z0-9]
5
Compiladores e Intrpretes 9
Lenguajes
Def. Palabra: secuencia finita de
smbolos que pertenecen a un alfabeto.
Ejemplo:
Dado =[a-zA-Z0-9]
aAbBcC, es una palabra vlida
Compiladores e Intrpretes 10
Lenguajes
Long palabra: longitud de una palabra.
Equivale al nmero de smbolos del
alfabeto que la forman.
Ejemplo:
=[a-zA-Z]. Palabra: coche|coche|=5
=[co,ch,e]. Palabra: coche|coche|=3
6
Compiladores e Intrpretes 11
Lenguajes
Palabra vaca:se expresa .
No contiene ningn smbolo.
Su longitud es 0.
Compiladores e Intrpretes 12
Lenguajes
Universo de un alfabeto: se expresa con
W().
Todas las palabras que se pueden formar con el
alfabeto .
Es infinito.
est en todos los universos.
Ejemplo:
=[co-ch-e]W()= {,co,ch,e,coch,coecoco...}
7
Compiladores e Intrpretes 13
Lenguajes
Lenguaje sobre un alfabeto: todo
subconjunto de W().
Se representa L().
Hay infinitos lenguajes asociados a un alfabeto.
Ejemplo:
L1()={co,che,coco}
L2()={, coe,coch, coche}
Compiladores e Intrpretes 14
Lenguajes
Operaciones con palabras:
Concatenacin: xy xy. Palabra formada por los
smbolos de x seguidos de los smbolos de y.
Ejemplo: Si x=co e y=chexy=coche
Potencia, x
i
: concatenacin i veces de la palabra x.
Por definicin X
0
=.
Ejemplo: 2=[a,b] y x=abx
3
=ababab
Reflexin, x
-i
: la inversa se forma invirtiendo el
orden de los smbolos. ab ba
8
Compiladores e Intrpretes 15
Lenguajes
Operaciones con lenguajes:
Unin: si L1 y L2 son lenguajes, L1 U L2 contiene todas las
palabras de L1 ms las palabras de L2.
Se expresa: L1 U L2 =x|x L1 || x L2.
Ejemplo: si L1={1,2,3,a,b} ^ L2={h,p,l,9}L1 U
L2={1,2,3,a,b,h,p,l,9}
Interseccin: si L1 y L2 son lenguajes, su interseccin
contendr las palabras que pertenezcan a los dos lenguajes.
Se expresa:
Si L1={00,02,01,11}; L2={0,00,002,2,01}
2 1 L L
} ^ | { 2 1
2 1
L x L x x L L =
} 01 , 00 { 2 1 = L L
Compiladores e Intrpretes 16
Lenguajes
Operaciones con lenguajes:
Resta: si L1 y L2 son lenguajes, L1-L2 contendr
todas las palabras que pertenezcan a L1 y no
pertenezcan a L2.
Se expresa:
Ejemplo: Si L1={00,02,01,11}; L2={,0,00,002,2,01}
L1-L2={02,11}; L2-L1={,0,002,2}
Concatenacin: dados dos lenguajes L1 y L2 su
concatenacin L1L2 contendr todas las palabras de
L1 y de L2.
L1L2={xy|x L1 ^ y L2}
} 2 ^ 1 | { 2 1 L x L x x L L =
9
Compiladores e Intrpretes 17
Lenguajes
Operaciones con lenguajes:
Potencia: la potencia i-sima de un lenguaje
corresponde a la concatenacin i veces del lenguaje
con si mismo L
0
= {}.
Ejemplo: L={0,1}, L
2
={00,01,10,11}
Clausura positiva: se forma uniendo todas las
potencias del lenguaje excluyendo la potencia 0.
Se expresa: L
+
=U
i=1

L
i
, sin L
0
Ejemplo: si L1={0,1}; L1
+
={0,1,00,01,10,11,000,001}
Clausura o cierre: se forma por la unin de la palabra
vaca a la clausura positiva del lenguaje.
Se expresa: L
*
= L
+
U {} = U
i=0

L
i
Compiladores e Intrpretes 18
Lenguajes
Operaciones con lenguajes:
Reflexin: la reflexin de un lenguaje est formada por
al aplicacin de la reflexin a cada una de las palabras
del lenguaje.
10
Compiladores e Intrpretes 19
1. Lenguajes
2. Otras definiciones I
3. Gramticas formales
4. Tipos de gramticas
5. Otras definiciones II
6. Traduccin
7. Fases del compilador
8. Contexto del compilador
ndice
Compiladores e Intrpretes 20
Otras definiciones I
Descripcin de gramticas
Gramtica: sirve para definir un lenguaje
Produccin o regla:
Antecedente ::= Consecuente (x::=y). Si se encuentra x en una
palabra v, se puede sustituir x por y.
Derivacin directa: v w
Aplicando una produccin a una palabra v para
convertirla en otra palabra.
Derivacin: v
*
w
Aplicacin de una secuencia de producciones a una
palabra.
11
Compiladores e Intrpretes 21
1. Lenguajes
2. Otras definiciones I
3. Gramticas formales
4. Tipos de gramticas
5. Otras definiciones II
6. Traduccin
7. Fases del compilador
8. Contexto del compilador
ndice
Compiladores e Intrpretes 22
Gramticas formales
Descripciones estructurales de las sentencias de
los lenguajes (formales y naturales).
Definicin extensional del lenguaje
Definicin intensional del lenguaje
Gramticasdefinicin intensional del lenguaje.
Gramtica formal: G = (T, N, S, P)
Requisitos:
=
T
U
N

T

N
=
12
Compiladores e Intrpretes 23
Gramticas formales
Para escribir las gramticas se utiliza notacin
BNF:
| varias producciones con la parte izq. en
comn.
{ } el contenido de las llaves puede aparecer:
0, 1 o ms veces
[ ] el contenido de los corchetes puede
aparecer 0 1 vez.
Compiladores e Intrpretes 24
Gramticas formales
Forma sentencial: x es fs si existe una derivacin
desde el axioma hasta esa palabra, es decir
si S
*
x
Sentencia: x es sentencia si es fs y x
T
*
Lenguaje generado por una gramtica,
L(G) = {x | x
T
*
y S
*
x}
13
Compiladores e Intrpretes 25
Gramticas formales
Equivalencia de gramticas: dos gramticas son
equivalentes si generan el mismo lenguaje.
Regla compresora: parte de la derecha menor
longitud que la parte de la izquierda.
Ejemplo: reglas en las que la palabra vaca es la parte
derecha de la regla.
Compiladores e Intrpretes 26
1. Lenguajes
2. Otras definiciones I
3. Gramticas formales
4. Tipos de gramticas
5. Otras definiciones II
6. Traduccin
7. Fases del compilador
8. Contexto del compilador
ndice
14
Compiladores e Intrpretes 27
Tipos de gramticas
Chomsky las clasifica segn forma de las reglas.
Tipo gramtica Tipo lenguaje autmata
Tipo 0 (sin restriccin):
P= { u ::= v | u=xAy, u
+
, x,y,v
*
y A
N
}
Parte izquierda como mnimo un no terminal
Tipo 1 (dependiente del contexto o sensible al
contexto):
P= { (xAy ::= xvy) o (S ::= ) | v
+
, x,y
*
y
A
N
}
Parte izq. y der. deben tener una parte en comn y
solo una regla compresora: S ::=
Compiladores e Intrpretes 28
Tipos de gramticas
Tipo 2 (independientes del contexto):
P= { (A ::= v) o (S ::= ) | v
+
, A
N
}
Parte izq. solo puede tener un smbolo no terminal
15
Compiladores e Intrpretes 29
Tipos de gramticas
Tipo 3 (regulares o lineales):
Lineales por la izquierda:
P= { (A ::= Ba) o (A ::= a) o (S ::= ) | a
T
,
A,B
N
}
Lineales por la derecha:
P= { (A ::= aB) o (A ::= a) o (S ::= ) | a
T
,
A,B
N
}
G
3
G
2
G
1
G
0
Compiladores e Intrpretes 30
1. Lenguajes
2. Otras definiciones I
3. Gramticas formales
4. Tipos de gramticas
5. Otras definiciones II
6. Traduccin
7. Fases del compilador
8. Contexto del compilador
ndice
16
Compiladores e Intrpretes 31
Otras definiciones II
rboles de derivacin
Son una forma de representar las derivaciones.
Se utilizan en la construccin de compiladores
Slo se pueden utilizar para las gramticas de tipo
1,2,3
Compiladores e Intrpretes 32
Otras definiciones II
rboles de derivacin
Axioma raz del rbol
Terminales hojas del rbol
No terminales nodos intermedios
Derivaciones sucesores del smbolo no terminal
de la izquierda de las producciones
17
Compiladores e Intrpretes 33
Otras definiciones II
Ambigedad: el significado es similar al
empleado de forma coloquial. Existe ms de
una forma de generar la palabra desde el
axioma. Hay varios niveles:
Sentencia: si tiene ms de una derivacin (=
rbol).
Gramtica: si tiene como mnimo una sentencia
ambigua
Lenguaje: si existe una gramtica ambigua que lo
genera (con una basta)
Lenguaje Inherentemente ambiguo si son todas la
G ambiguas.
Compiladores e Intrpretes 34
Otras definiciones II
Ambigedad
No debe existir ambigedad para que el
anlisis sea determinista.
18
Compiladores e Intrpretes 35
Otras definiciones II
Recursividad: la definicin del concepto
utiliza ese mismo concepto en la definicin.
Hay varios niveles:
Produccin: (A::= xAy) P, x,y
*
, A
N
Gramtica: mnimo una produccin recursiva
Rec. por la izq.: (A::= Ay) P, y
*
, A
N
Rec. por la der.: (A::= xA) P, x
*
, A
N
Rec. por la izq. en ms de una paso:
(A::= Bx), B
*
Ay B,A
N
x,y
*
Compiladores e Intrpretes 36
Otras definiciones II
Recursividad: la definicin del concepto
utiliza ese mismo concepto en la definicin.
Hay varios niveles:
Produccin: (A::= xAy) P, x,y
*
, A
N
Gramtica: mnimo una produccin recursiva
Rec. por la izq.: (A::= Ay) P, y
*
, A
N
Rec. por la der.: (A::= xA) P, x
*
, A
N
Rec. por la izq. en ms de una paso:
(A::= Bx), B
*
Ay B,A
N
x,y
*
19
Compiladores e Intrpretes 37
Otras definiciones II
Para la construccin de compiladores se necesita
que las gramticas no sean recursivas,
especialmente por la izquierda.
Compiladores e Intrpretes 38
1. Lenguajes
2. Otras definiciones I
3. Gramticas formales
4. Tipos de gramticas
5. Otras definiciones II
6. Traduccin
7. Fases del compilador
8. Contexto del compilador
ndice
20
Compiladores e Intrpretes 39
Traduccin
El proceso de compilacin consiste en
traducir un lenguaje que tiene una
estructura (lenguaje de alto nivel) a un
lenguaje ms bsico que entienda la mquina
(lenguaje de bajo nivel)
Cada uno de los lenguajes tiene sus
caractersticas y su estructura
Hay que establecer una correspondencia
entre cada una de las estructuras
Compiladores e Intrpretes 40
1. Lenguajes
2. Otras definiciones I
3. Gramticas formales
4. Tipos de gramticas
5. Otras definiciones II
6. Traduccin
7. Fases del compilador
8. Contexto del compilador
ndice
21
Compiladores e Intrpretes 41
Fases de compilacin
El proceso de compilacin se divide en
fases:
Anlisis lxico
Anlisis sintctico
Anlisis semntico
Generacin de cdigo intermedio
Optimizacin de cdigo intermedio*
Generacin de cdigo final
Optimizacin de cdigo final
Compiladores e Intrpretes 42
Fases de compilacin
Del libro Compiladores. Principios,
tcnicas y herramientas del autor
Aho.
Modelo de anlisis
y sntesis de la compilacin:
Anlisis: deteccin de errores
y representacin
Sntesis: construye el
programa objeto.
22
Compiladores e Intrpretes 43
Fases de compilacin
Del libro Compiladores. Principios,
tcnicas y herramientas del autor
Aho.
Compiladores e Intrpretes 44
Fases de compilacin
Cada una de las fases de compilacin
tiene una tarea bien definida
23
Compiladores e Intrpretes 45
1. Lenguajes
2. Otras definiciones I
3. Gramticas formales
4. Tipos de gramticas
5. Otras definiciones II
6. Traduccin
7. Fases del compilador
8. Contexto del compilador
ndice
Compiladores e Intrpretes 46
Contexto del compilador
Del libro Compiladores. Principios,
tcnicas y herramientas del autor
Aho.
Puede
requerir
etapas
previas y
posteriores.
Preprocesador
Compilador
Ensamblador
Cdigo ensamblador (mnemotcnicos)
Cargador
Cdigo mquina relocalizable
Enlazador
Cdigo mquina absoluto
Programa ejecutable
24
Compiladores e Intrpretes 47
Contexto del compilador
Un compilador puede requerir otros
programas para crear un programa objeto.
Preprocesador:
Rene los distintos archivos
Expande macros
Ensamblador: traduce el programa a cdigo
mquina
Cargador: rene las bibliotecas
Enlazador: genera el ejecutable

También podría gustarte