Ejercicios de Análisis Sintáctico
Ejercicios de Análisis Sintáctico
Obt
Obtener las
l gramáticas
áti que producen:
d
1.
1 U o más
Una á aes con recursividad
i id d por lla iizquierda
i d ((r.i)
i)
Procesadores de lenguaje 2.
3.
Cero o más aes (r.i)
Una o más aes con recursividad por la derecha (r.d)
Ejercicios de análisis sintáctico 4. Cero o más aes (r.d)
5. Una b y cero o más aes (r.i)
Salvador Sánchez
Sánchez, Daniel Rodríguez 6
6. Cero o más aes terminando en b (r(r.d)
d)
Departamento de Ciencias de la Computación 7. Cero o más aes separadas por ‘;’ (r.d)
Universidad de Alcalá
8. Una o más aes separadas por ‘;’ (r.i)
1. A->Aa
1 A A |a • Ejemplos:
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
Analizador LL(1) – Conjunto primero Analizador LL(1) - Conjunto primero
1.Calcular
1 C l l ell conjunto
j t Primero
Pi d A para lla gramática
de áti 1 C j t Primero
1.Conjunto Pi d A para lla gramática
de áti siguiente:
i i t
siguiente: AÆ (A)A | ε
AÆ (A)A | ε
SOLUCIÓN: Primero(A) = { ( , є }
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
1. Solución:
• Ejemplo
Ej l 1:
1 • Ejemplo
Ej l 3:
3 Prim(S)={a}, Prim(B)={b}, Prim(C)={c}
Sig(S)={$}, Sig(B)={c}, Sig(C)={d}
S Æ aBCd
BCd S Æ aBCd
BCd 2. Solución:
B Æ bb B Æ CB | b Prim(S)={a}, Prim(B)={b,d}, Prim(C)={c}
C Æ cc C Æ cc | ε Sig(S)={$}, Sig(B)={c}, Sig(C)={d}
3. Solución:
• Ejemplo 2: • Ejemplo 4: Prim(S)={a}, Prim(B)={b,c}, Prim(C)={c, ε}
Sig(S)={$}, Sig(B)={c,d} Sig(C)={b,c,d}
S Æ aBCd
S Æ if B then S | write B | id := B 4. Solución:
B Æ bB | d
B Æ id = id | id <> id | true | false Prim(S)={if, write, id}, Prim(B)={id, true, false}
C Æ cc Sig(S)={$}, Sig(B)={then, $}
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
Analizador LL(1) - Análisis Solución
Conjuntos
j primero:
p
2. Reconocer la cadena “cab” con el analizador construido. Prim(S)={c} Prim(A)={a} Prim(B)={b, ε}
Conjuntos siguiente:
Sig(S)={$} Sig(A)=Sig(S)={$} Sig(B)=Sig(A)={$}
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
Solución Solución
c a b $
$S cab$
S $Ac Reconocimiento cab$
S → cA
A
$A A→aB ab$
A
A → aB $Ba Reconocimiento ab$
B B→b B→ε $B B→b b$
$b Reconocimiento b$
$ éxito $
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
Analizador LL(1) - Análisis Solución
1 C
1. Comprobar
b sii la
l siguiente
i i t gramática
áti es LL(1) y construir
t i la
l Prim (E) = { ((, id } Sig (E) = { $,
Si $ )}
tabla de análisis y todos los conjuntos Siguiente y Primero. Prim (E’) = { +, є } Sig (E’) = { $, ) }
Prim (T) = { (, id } Sig (T) = {+ {+, $
$, )}
E Æ TE’ Prim (T’) = { *, є } Sig (T’) = { +, $, )}
E’ Æ +TE’ | є Prim (F) = { (, id } Sigg ((F)) = {{*,+, $, )}
T Æ FT
FT’
T’ Æ *FT’ | є
F Æ (E) | id
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
B -> DL
D -> id ; D | є
L ->
>S;L|є
S -> a + a
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
Analizador LL(1) - Análisis Analizador LL(1) - Análisis
Pila Decisión Entrada
Prim(B)
P i (B) = { id
id, a, ε } Sig(B)
S ( )={$} $B BÆDL id;a+a;$
Reconocer:
Prim(D) = { id, є } Sig(D) = { a, $ } $LD DÆid;D id;a+a;$
id;a+a;
Prim(L) = { a
a, є } Sig(L) = { $ } $LD;id Reconocer id id;a+a;$
Prim(S) = { a } Sig(S) = { ; } $LD; Reconocer ; ;a+a;$
$LD DÆє a+a;$
$L LÆS;L a+a;$
$ id ; a + $L;S SÆa+a a+a;$
B BÆDL BÆDL - BÆDL - $L;a+a Reconocer a a+a;$
D DÆє DÆid;D - DÆ є - $L;a+ Reconocer + +a;$
$L;a Reconocer a a;$
L LÆє - - ;
LÆS;L -
$L; Reconocer ; ;$
S - - - SÆa+a -
$L LÆє $
$ EXITO $
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
Analizador LR(0) - Análisis Analizador LR(0) - Análisis
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
1 A partir
1. ti d
de la
l siguiente
i i t gramática,
áti construir
t i ell autómata
tó t finito
fi it
Reconocer: determinista y la tabla de análisis para el analizador LR(0).
(6+(4*2))
SÆ (S)S|ε
Pila Decisión Entrada
... ... ...
$0(2E3+4T Ir_a 5 )$
Desplazar
$0(2E3+4T5 )$
2. Reconocer la cadena “(())()”.
$0(2E3+4T5)7 Reducir EÆ(E+T)
( ) $
$0E Ir_a 1 $
$0E1 Reducir E’ÆE $
$0E' EXITO $
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
Analizador LR(0) - Análisis Analizador LR(0) - Análisis
Conflictos:
S0: Desplazamiento-reducción
S2: Desplazamiento-reducción
S4: Desplazamiento
Desplazamiento-reducción
reducción E t d
Entrada I a
Ir
Acción Regla ( )
1 Reducir S’ÆS
2 Desplazar / Reducir SÆ Є 2 3
3 Desplazar - 4
4 Desplazar / Reducir SÆ Є 2 5
5 Reducir SÆ(S)S
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
1 A partir
1. ti d
de la
l siguiente
i i t gramática,
áti construir
t i ell autómata
tó t finito
fi it a)) Ampliar
A li lla gramática:
áti
determinista y la tabla de análisis para el analizador SLR(1).
E’Æ E
EÆ (E + T) | id
E Æ (E + T) | id TÆ (T * F) | id
T Æ (T * F) | id FÆ id
F Æ id
(6+(4 2)) .
2 Reconocer la cadena “(6+(4*2))”
2. b) Conjuntos Siguiente:
Sig (E’) = { $ }
Sig (E) = { + , $ }
Sig (T) = { * , ) }
Sig (F) = { ) }
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
Analizador SLR(1) - Análisis Analizador SLR(1) - Análisis
S1
c)) Autómata:
A tó t E’ Æ E. d) Tabla
T bl análisis:
áli i
E
S0 S2 S3 Ir_a
(
E’Æ.E E Æ (.E+T) Estado $ ( ) * + id E T F
( E Æ .(E+T) E Æ (E.+T)
E Æ.(E+T) E 0 D: 2 D: 13 1
EÆ .id E Æ .id
1 Aceptar
id id
S13 + 2 D: 2 D: 13 3
E Æ id. 3 D: 4
S4
4 D: 6 D: 14 5
S8 E Æ (E+.T)
5 D: 7
T Æ .(T*F)
T Æ (T.*F) T ( T Æ .id 6 D: 6 D: 14 8
S6
T 7 R: EÆ(E+T) R:EÆ(E+T)
* T Æ (.T*F)
S5
id 8 D: 9
S9 T Æ .(T*F) ( E Æ (E+T.)
T Æ .id 9 D: 12 10
T Æ (T*.F) S14
FÆ.id ) 10 D: 11
id T Æ id.
id S7 11 R:TÆ (T*F) R:TÆ (T*F)
id F E Æ (E+T).
S11 12 R: F Æ id
S12 S10
) 13 R: E Æ id R: EÆ id
F Æ id. T Æ (T*F.) T Æ(T*F).
14 R: T Æ id R: T Æ id
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
Analizador SLR(1) - Análisis Análisis sintáctico SLR(1)
1 A partir
1. ti d
de la
l siguiente
i i t gramática,
áti construir
t i ell autómata
tó t finito
fi it A tó t
Autómata:
determinista y la tabla de análisis para el analizador SLR(1).
S Æ (S) S | ε
) .
2 Reconocer la cadena “(( ( ) )( )”
2.
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
Ir a $0(2(2S3 D: 4 ))()$
$0(2(2S3)4 R: SÆЄ )()$
( ) $ S
$0(2(2S3)4S Ir_a 5 )()$
0 D-2 R: SÆЄ R: SÆЄ 1 $0(2(2S3)4S5 R: SÆ(S)S )()$
1 Aceptar $0(2S Ir_a 3 )()$
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
Analizador SLR(1) - Análisis Análisis SLR(1)
E -> E OR E
e) Reconocer (())()
| E AND E
Pila Decisión Entrada | (E)
... ... ...
|0
$0(2S3)4(2S3)4
$ ( ) ( ) R: SÆЄ $
$0(2S3)4(2S3)4S Ir_a 5 $ |1
$0(2S3)4(2S3)4S5 R: SÆ(S)S $
$0(2S3)4S Ir_a
_ 5 $
$0(2S3)4S5 R: SÆ(S)S $
$0 R: SÆЄ $
$0S Ir_a 1 $
$0S1 Aceptar $
EXITO
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
Estado OR AND ( ) 0 1 # E S ÆS
S’ÆS
0 s6 s9 s10 1 SÆL=R | R
LÆ*R | id
1 s2 s3 r1 aceptar
RÆL
2 s6 s9 s10 4
3 s6 s9 s10 5
4 s2/r2 s3/r2 r2 r2
5 s2/r3 s3/r3 r3 r3
8 r4 r4 r4 r4 - La gramática no es SLR
9 r5 r5 r5 r5
10 r6 r6 r6 r6
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
Analizador LALR(1) - Autómata I Analizador LALR(1) - Autómata II
S ÆS
S’ÆS S ÆS
S’ÆS
SÆL=R | R SÆL=R | R
LÆ*R | id LÆ*R | id
RÆL RÆL
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
R0: S’Æ
SÆS
R1: SÆ L=R
R2: SÆ R
R3: LÆ *R
R
R4: LÆ id
R5: RÆ L
Procesadores de lenguaje – Ejercicios Análisis Sintáctico Procesadores de lenguaje – Ejercicios Análisis Sintáctico
Salvador Sánchez, Daniel Rodríguez Salvador Sánchez, Daniel Rodríguez
Analizador LALR(1) - Análisis









