TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 20.5 PREFERIDO.wbk.wbk SEG...
1_1Analisis_Sintactico_-_Introduccion.pdf
1. Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4
Procesadores de
Procesadores de
Lenguajes
Lenguajes
Tema 4
Tema 4
An
Aná
álisis sint
lisis sintá
áctico
ctico
Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4
Tema 4
Tema 4 –
– An
Aná
álisis
lisis
Sint
Sintá
áctico
ctico
Sesi
Sesió
ón 1: Conceptos b
n 1: Conceptos bá
ásicos del
sicos del
an
aná
álisis sint
lisis sintá
áctico
ctico
Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4 –
– 3
3
Sesi
Sesió
ón 1: Conceptos b
n 1: Conceptos bá
ásicos
sicos
del an
del aná
álisis sint
lisis sintá
áctico
ctico
„
„ Generalidades:
Generalidades:
–
– El an
El aná
álisis sint
lisis sintá
áctico en contexto
ctico en contexto
–
– ¿
¿Por qu
Por qué
é separar an
separar aná
álisis l
lisis lé
éxico y sint
xico y sintá
áctico?
ctico?
–
– En qu
En qué
é consiste el an
consiste el aná
álisis sint
lisis sintá
áctico
ctico
–
– Tipos de analizadores sint
Tipos de analizadores sintá
ácticos
cticos
„
„ An
Aná
álisis sint
lisis sintá
áctico descendente
ctico descendente
„
„ An
Aná
álisis sint
lisis sintá
áctico ascendente
ctico ascendente
–
– Á
Árboles de derivaci
rboles de derivació
ón y
n y parses
parses (con ejemplo)
(con ejemplo)
–
– El analizador sint
El analizador sintá
áctico como traductor
ctico como traductor
„
„ Dise
Diseñ
ño de alto nivel:
o de alto nivel:
–
– Estrategias para el an
Estrategias para el aná
álisis sint
lisis sintá
áctico
ctico
„
„ Eficiencia de analizadores sint
Eficiencia de analizadores sintá
ácticos
cticos
–
– Tipos de gram
Tipos de gramá
áticas para el an
ticas para el aná
álisis sint
lisis sintá
áctico
ctico
Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4 –
– 4
4
Fase de an
Fase de aná
álisis
lisis
El an
El aná
álisis sint
lisis sintá
áctico en
ctico en
contexto (I)
contexto (I)
An
Aná
álisis
lisis
l
lé
éxico
xico
An
Aná
álisis
lisis
sint
sintá
áctico
ctico
An
Aná
álisis
lisis
sem
semá
ántico
ntico
Programa
Programa
fuente
fuente
Programa
Programa
objeto
objeto
Fase de s
Fase de sí
íntesis
ntesis
Generaci
Generació
ón de
n de
c
có
ódigo
digo
intermedio
intermedio
Optimizaci
Optimizació
ón
n
de c
de có
ódigo
digo
intermedio
intermedio
Generaci
Generació
ón de
n de
c
có
ódigo
digo
m
má
áquina
quina
Optimizaci
Optimizació
ón
n
de c
de có
ódigo
digo
m
má
áquina
quina
2. Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4 –
– 5
5
El an
El aná
álisis sint
lisis sintá
áctico en
ctico en
contexto (II)
contexto (II)
Analizador
léxico
Analizador
sintáctico
Tabla de símbolos
token
Dame el
siguiente token
Mensajes
de error
Analizador
semántico
Árbol sintáctico o
secuencia de elementos
sintácticos
OK / error
Error semántico
Error léxico
Error sintáctico
Inserta(entrada, atributo, valor)
Consulta(entrada, atributo, valor)
Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4 –
– 6
6
¿
¿Por qu
Por qué
é separar an
separar aná
álisis
lisis
l
lé
éxico y sint
xico y sintá
áctico?
ctico?
„
„ Se simplifica el dise
Se simplifica el diseñ
ño del analizador sint
o del analizador sintá
áctico:
ctico:
–
– No ha de preocuparse de leer el fichero de entrada, ni procesar
No ha de preocuparse de leer el fichero de entrada, ni procesar
blancos, ni comentarios, ni de recibir caracteres inesperados.
blancos, ni comentarios, ni de recibir caracteres inesperados.
„
„ El dise
El diseñ
ño general del compilador se hace m
o general del compilador se hace má
ás claro y
s claro y
comprensible.
comprensible.
„
„ Se mejora la eficiencia del compilador en su conjunto:
Se mejora la eficiencia del compilador en su conjunto:
–
– La lectura del programa fuente suele requerir gran parte del
La lectura del programa fuente suele requerir gran parte del
tiempo de compilaci
tiempo de compilació
ón, que se ve reducido si el analizador
n, que se ve reducido si el analizador
lexicogr
lexicográ
áfico incorpora t
fico incorpora té
écnicas especiales de lectura, o est
cnicas especiales de lectura, o está
á
realizado en ensamblador.
realizado en ensamblador.
„
„ Aumenta la portabilidad del compilador:
Aumenta la portabilidad del compilador:
–
– Abstrae al resto del compilador de todas las diferencias que se
Abstrae al resto del compilador de todas las diferencias que se
produzcan en el alfabeto de entrada, o en el dispositivo de
produzcan en el alfabeto de entrada, o en el dispositivo de
almacenamiento (por ejemplo: migrar de programas fuente en
almacenamiento (por ejemplo: migrar de programas fuente en
ASCII al est
ASCII al está
ándar EBCDIC).
ndar EBCDIC).
Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4 –
– 7
7
En qu
En qué
é consiste el an
consiste el aná
álisis
lisis
sint
sintá
áctico
ctico
„
„ Analizar
Analizar sint
sintá
ácticamente
cticamente una cadena de
una cadena de tokens
tokens no
no
es m
es má
ás que encontrar para ella el
s que encontrar para ella el á
árbol sint
rbol sintá
áctico o
ctico o
la cadena de derivaci
la cadena de derivació
ón que tiene:
n que tiene:
–
– como ra
como raí
íz, el axioma de la gram
z, el axioma de la gramá
ática,
tica,
–
– como nodos terminales, la sucesi
como nodos terminales, la sucesió
ón ordenada de s
n ordenada de sí
ímbolos
mbolos
que componen la cadena analizada.
que componen la cadena analizada.
„
„ En caso de no existir este
En caso de no existir este á
árbol sint
rbol sintá
áctico (o la
ctico (o la
cadena de derivaciones), la cadena de
cadena de derivaciones), la cadena de tokens
tokens no
no
pertenecer
pertenecerá
á al lenguaje, y el analizador sint
al lenguaje, y el analizador sintá
áctico
ctico
ha de emitir el correspondiente mensaje de error.
ha de emitir el correspondiente mensaje de error.
Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4 –
– 8
8
Tipos de analizadores
Tipos de analizadores
sint
sintá
ácticos
cticos
„
„ Analizadores descendentes:
Analizadores descendentes:
–
– Partiendo de la ra
Partiendo de la raí
íz del
z del á
árbol (el axioma inicial de la
rbol (el axioma inicial de la
gram
gramá
ática), construyen el
tica), construyen el á
árbol sint
rbol sintá
áctico de an
ctico de aná
álisis
lisis
(descendiendo) hacia sus nodos terminales; para
(descendiendo) hacia sus nodos terminales; para
ello, se utilizan derivaciones por la izquierda, hasta
ello, se utilizan derivaciones por la izquierda, hasta
llegar a reconocer (salvo error) la cadena analizada.
llegar a reconocer (salvo error) la cadena analizada.
„
„ Analizadores ascendentes:
Analizadores ascendentes:
–
– Partiendo de sus nodos terminales (la cadena de
Partiendo de sus nodos terminales (la cadena de
tokens
tokens), construyen el
), construyen el á
árbol sint
rbol sintá
áctico de an
ctico de aná
álisis
lisis
(ascendiendo) hacia su ra
(ascendiendo) hacia su raí
íz (el axioma inicial de la
z (el axioma inicial de la
gram
gramá
ática); para ello, se utilizan derivaciones por la
tica); para ello, se utilizan derivaciones por la
derecha hasta llegar a reconocer (salvo error) la
derecha hasta llegar a reconocer (salvo error) la
cadena analizada.
cadena analizada.
3. Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4 –
– 9
9
Á
Árboles de derivaci
rboles de derivació
ón y
n y
parses
parses
„
„ Para representar el
Para representar el á
árbol sint
rbol sintá
áctico que conduce hasta una
ctico que conduce hasta una
cadena, se asigna a cada regla de la gram
cadena, se asigna a cada regla de la gramá
ática un n
tica un nú
úmero.
mero.
„
„ Parse
Parse:
:
–
– Secuencia ordenada de los n
Secuencia ordenada de los nú
úmeros de las reglas aplicadas para
meros de las reglas aplicadas para
construir el
construir el á
árbol de derivaci
rbol de derivació
ón de la cadena de
n de la cadena de tokens
tokens de
de
entrada.
entrada.
–
– Parse
Parse izquierdo
izquierdo:
:
„
„ Son los n
Son los nú
úmeros de las reglas de derivaci
meros de las reglas de derivació
ón izquierda utilizadas para
n izquierda utilizadas para
generar la cadena a partir del axioma
generar la cadena a partir del axioma –
– recorrido del
recorrido del á
árbol en
rbol en
preorden
preorden (usado en
(usado en an
aná
álisis descendente
lisis descendente).
).
–
– Parse
Parse derecho
derecho:
:
„
„ Son los n
Son los nú
úmeros de las reglas de derivaci
meros de las reglas de derivació
ón derecha utilizadas para
n derecha utilizadas para
generar la cadena a partir del axioma (recorrido del
generar la cadena a partir del axioma (recorrido del á
árbol en
rbol en
postorden
postorden) en orden inverso. El tomar el orden inverso viene
) en orden inverso. El tomar el orden inverso viene
condicionado por ser el
condicionado por ser el an
aná
álisis ascendente
lisis ascendente el que normalmente
el que normalmente
utiliza las reglas de derivaci
utiliza las reglas de derivació
ón derecha, con lo que el orden en el que
n derecha, con lo que el orden en el que
aparecen al realizar el an
aparecen al realizar el aná
álisis es
lisis es invertido
invertido.
.
Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4 –
– 10
10
Á
Árboles de derivaci
rboles de derivació
ón y
n y
parses
parses : ejemplo
: ejemplo
„
„ Dada la gram
Dada la gramá
ática:
tica:
1.
1. E
E o
o T
T
2.
2. E
E o
o T+E
T+E
3.
3. T
T o
o F
F
4.
4. T
T o
o F*T
F*T
5.
5. F
F o
o a
a
6.
6. F
F o
o b
b
7.
7. F
F o
o (E)
(E)
„
„ y la sentencia:
y la sentencia:
–
– a*(a+b)
a*(a+b)
„
„ El
El parse
parse izquierdo es:
izquierdo es:
–
– 1
1-
-4
4-
-5
5-
-3
3-
-7
7-
-2
2-
-3
3-
-5
5-
-1
1-
-3
3-
-6
6
„
„ y el derecho:
y el derecho:
–
– 5
5-
-5
5-
-3
3-
-6
6-
-3
3-
-1
1-
-2
2-
-7
7-
-3
3-
-4
4-
-1
1
E
E
T
T
T
T
*
*
F
F
a
a F
F
)
)
E
E
(
(
E
E
+
+
T
T
T
T
F
F
a
a
b
b
1
1
3
3
4
4
5
5
7
7
2
2
3
3
5
5
1
1
3
3
6
6
F
F
E
E
T
T
T
T
*
*
F
F
a
a F
F
)
)
E
E
(
(
E
E
+
+
T
T
T
T
F
F
a
a
b
b
1
1
3
3
4
4
5
5
7
7
2
2
3
3
5
5
1
1
3
3
6
6
F
F
Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4 –
– 11
11
El analizador sint
El analizador sintá
áctico
ctico
como traductor (I)
como traductor (I)
„
„ Traduce la cadena de
Traduce la cadena de tokens
tokens del fichero de entrada
del fichero de entrada
(programa fuente) a una estructura que la
(programa fuente) a una estructura que la
represente desde un punto de vista sint
represente desde un punto de vista sintá
áctico:
ctico:
–
– Á
Árbol sint
rbol sintá
áctico (did
ctico (didá
ácticamente, muy
cticamente, muy ú
útil; en la pr
til; en la prá
áctica,
ctica,
poco eficiente).
poco eficiente).
–
– Secuencia de reglas usadas para reconocer (analizar)
Secuencia de reglas usadas para reconocer (analizar)
sint
sintá
ácticamente
cticamente la cadena de entrada (
la cadena de entrada (parse
parse).
).
–
– Vertebrando,
Vertebrando, mediante su propio c
mediante su propio có
ódigo
digo, el resto de
, el resto de
tareas del compilador, excepto la de generaci
tareas del compilador, excepto la de generació
ón de c
n de có
ódigo
digo
final (m
final (má
áquina)
quina) –
– traducci
traducció
ón dirigida por la sintaxis (TDS).
n dirigida por la sintaxis (TDS).
Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4 –
– 12
12
Traductor dirigido por la sintaxis
(TDS)
El analizador sint
El analizador sintá
áctico
ctico
como traductor (II)
como traductor (II)
Analizador
léxico
Tabla de símbolos
Mensajes de
error
Analizador sintáctico
Generador de
código
intermedio
Analizador
semántico
Generador de
código
máquina
token
Dame el
siguiente token
Inserta (entrada,
atributo, valor)
Consulta (entrada,
atributo, valor)
Código
intermedio
4. Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4 –
– 13
13
Estrategias de an
Estrategias de aná
álisis
lisis
sint
sintá
áctico (I)
ctico (I)
„
„ Propiedades deseables en un analizador
Propiedades deseables en un analizador
sint
sintá
áctico:
ctico:
–
– Eficiencia
Eficiencia Ÿ
Ÿ minimizar:
minimizar:
„
„ Su coste:
Su coste:
–
– Temporal
Temporal
–
– De memoria, aunque este criterio sea secundario.
De memoria, aunque este criterio sea secundario.
„
„ La dimensi
La dimensió
ón (
n (k
k) de la ventana de
) de la ventana de tokens
tokens que se
que se
considera en cada momento (
considera en cada momento (prean
preaná
álisis
lisis)
)
–
– Ausencia de retrocesos (
Ausencia de retrocesos (backtracking
backtracking)
)
„
„ Las acciones sem
Las acciones semá
ánticas son dif
nticas son difí
íciles de deshacer
ciles de deshacer
Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4 –
– 14
14
Estrategias de an
Estrategias de aná
álisis
lisis
sint
sintá
áctico (II)
ctico (II)
„
„ Eficiencia de analizadores sint
Eficiencia de analizadores sintá
ácticos:
cticos:
–
– Si
Si n
n es el n
es el nú
úmero de
mero de tokens
tokens del programa
del programa
fuente:
fuente:
„
„ Para cualquier gram
Para cualquier gramá
ática de contexto libre:
tica de contexto libre:
–
– Se puede construir un analizador sint
Se puede construir un analizador sintá
áctico de
ctico de
complejidad
complejidad O(n
O(n3
3)
) Ÿ
Ÿ muy costoso
muy costoso
„
„ Los lenguajes inform
Los lenguajes informá
áticos, en general, se dise
ticos, en general, se diseñ
ñan con
an con
reglas de contexto libre que permitan su an
reglas de contexto libre que permitan su aná
álisis
lisis
sint
sintá
áctico mediante un algoritmo lineal (
ctico mediante un algoritmo lineal (O(n
O(n)
) ):
):
–
– Mediante el an
Mediante el aná
álisis de izquierda a derecha de la entrada
lisis de izquierda a derecha de la entrada
–
– Considerando un
Considerando un ú
único
nico token
token en cada momento
en cada momento
Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4 –
– 15
15
Estrategias de an
Estrategias de aná
álisis
lisis
sint
sintá
áctico (III)
ctico (III)
k
k
k
k
Dimensi
Dimensió
ón de la ventana
n de la ventana
de
de tokens
tokens de
de prean
preaná
álisis
lisis
(
(look
look-
-ahead
ahead)
)
Ascendente
Ascendente
Descendente
Descendente
Tipo de analizador
Tipo de analizador
Rightmost
Rightmost derivation
derivation (R)
(R)
(por la derecha)
(por la derecha)
Leftmost
Leftmost derivation
derivation (L)
(L)
(por la izquierda)
(por la izquierda)
Tipo de derivaci
Tipo de derivació
ón
n
realizada
realizada
Left
Left-
-to
to-
-right
right (L)
(L)
(de izquierda a derecha)
(de izquierda a derecha)
Left
Left-
-to
to-
-right
right (L)
(L)
(de izquierda a derecha)
(de izquierda a derecha)
Direcci
Direcció
ón de lectura de
n de lectura de
los
los tokens
tokens
LR(K
LR(K)
)
LL(K
LL(K)
)
Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4 –
– 16
16
Tipos de lenguajes formales
Tipos de lenguajes formales
para el an
para el aná
álisis sint
lisis sintá
áctico
ctico
Lenguajes de contexto libre
Lenguajes de contexto libre
deterministas
deterministas
Lenguajes
Lenguajes LR(k
LR(k)
)
Lenguajes de Precedencia
Lenguajes de Precedencia
Simple
Simple
Lenguajes
Lenguajes LR(1)
LR(1)
Lenguajes
Lenguajes LL(k
LL(k)
)
Lenguajes de Precedencia de
Lenguajes de Precedencia de
Operador
Operador
Lenguajes
Lenguajes LL(1)
LL(1)
Lenguajes
Lenguajes SLR(1)
SLR(1)
5. Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4 –
– 17
17
Tipos de analizadores
Tipos de analizadores
sint
sintá
ácticos
cticos
„
„ Analizador descendente:
Analizador descendente:
–
– Analizador descendente recursivo:
Analizador descendente recursivo:
„
„ Con retroceso
Con retroceso
„
„ Sin retroceso (predictivo)
Sin retroceso (predictivo)
–
– Analizador descendente no recursivo predictivo (
Analizador descendente no recursivo predictivo ({
{ tabular):
tabular):
„
„ Analizador
Analizador LL(K
LL(K)
)
–
– Analizador
Analizador LL(1)
LL(1)
„
„ Analizador ascendente:
Analizador ascendente:
–
– Analizador ascendente con retroceso
Analizador ascendente con retroceso
–
– Analizador de gram
Analizador de gramá
áticas de precedencia simple
ticas de precedencia simple
–
– Analizador de gram
Analizador de gramá
áticas de precedencia de operador
ticas de precedencia de operador
–
– Analizador
Analizador LR(K
LR(K)
)
„
„ Analizadores
Analizadores LR(1)
LR(1)
–
– Analizadores
Analizadores SLR(1)
SLR(1)
Curso 2007/2008
Curso 2007/2008 Antonio Pareja Lora
Antonio Pareja Lora PP.LL
PP.LL.
. –
– Tema 4
Tema 4 –
– 18
18
Bibliograf
Bibliografí
ía
a
„
„ Aho
Aho, A. V.;
, A. V.; Sethi
Sethi, R.;
, R.; Ullman
Ullman, J. D.:
, J. D.: Compilers:
Compilers:
Principles, Techniques and Tools
Principles, Techniques and Tools.
. Massachusetts:
Massachusetts:
Addison
Addison-
-Wesley Publishing Company, 1986.
Wesley Publishing Company, 1986.
„
„ Alfonseca
Alfonseca Cubero, E.;
Cubero, E.; Alfonseca
Alfonseca Moreno, M.;
Moreno, M.;
Moriy
Moriyó
ón
n Salom
Salomó
ón, R. Teor
n, R. Teorí
ía de aut
a de autó
ómatas y
matas y
lenguajes formales. Madrid:
lenguajes formales. Madrid: Mc
Mc-
-Graw
Graw-
-
Hill/Interamericana de Espa
Hill/Interamericana de Españ
ña,
a, S.A.U
S.A.U., 2007.
., 2007.
„
„ Grogono
Grogono, P. Programaci
, P. Programació
ón en Pascal. Wilmington,
n en Pascal. Wilmington,
Delaware (EE.UU.):Addison
Delaware (EE.UU.):Addison-
-Wesley
Wesley
Iberoamericana, 1996.
Iberoamericana, 1996.
„
„ Sanch
Sanchí
ís
s Llorca
Llorca, F. J. y Gal
, F. J. y Galá
án Pascual, C.
n Pascual, C.
Compiladores: Teor
Compiladores: Teorí
ía y construcci
a y construcció
ón. Madrid:
n. Madrid:
Editorial Paraninfo, 1986.
Editorial Paraninfo, 1986.