Procesadores de Lenguaje - UJI - Curso 2009/2010 - Grupo TE2

Tema 3: Análisis sintáctico - Ejercicios de análisis LL(1) y RLL(1)

Solución del ejercicio A5

Apartado A5.1

Producciones <A> -> Anulable() Primeros() Siguientes(<A>)
1. <A> -> a <A> no a $
2. <A> ->


Tabla de análisis $ a
<A> 2 1

No hay conflictos en la tabla de análisis, y por tanto la gramática es LL(1).

Apartado A5.2

Producciones <A> -> Anulable() Primeros() Siguientes(<A>)
1. <A> -> a <A> no a $
2. <A> -> b no b


Tabla de análisis $ a b
<A>
1 2

No hay conflictos en la tabla de análisis, y por tanto la gramática es LL(1).

Apartado A5.3

Producciones <A> -> Anulable() Primeros() Siguientes(<A>)
1. <A> -> <A> a no a $ a
2. <A> ->


Tabla de análisis $ a
<A> 2 1, 2

Hay un conflicto en la tabla de análisis, y por tanto la gramática no es LL(1): al analizar <A>, si el símbolo de anticipación fuese a no sabríamos si aplicar la producción 1 o la producción 2.

Apartado A5.4

Producciones <A> -> Anulable() Primeros() Siguientes(<A>)
1. <A> -> <A> a no b $ a
2. <A> -> b no b


Tabla de análisis $ a b
<A>

1, 2

Hay un conflicto en la tabla de análisis, y por tanto la gramática no es LL(1): al analizar <A>, si el símbolo de anticipación fuese b no sabríamos si aplicar la producción 1 o la producción 2.

Apartado A5.5

Producciones <A> -> Anulable() Primeros() Siguientes(<A>)
1. <A> -> <B> <A> no b a $
2. <A> -> a no a
3. <B> -> b no b b a
4. <B> ->


Tabla de análisis $ a b
<A>
1, 2 1
<B>
4 3, 4

Hay dos conflicto en la tabla de análisis, y por tanto la gramática no es LL(1): al analizar <A>, si el símbolo de anticipación fuese a no sabríamos si aplicar la producción 1 o la producción 2; y al analizar <B>, si el símbolo de anticipación fuese b no sabríamos si aplicar la producción 3 o la producción 4.

Apartado A5.6

Producciones <A> -> Anulable() Primeros() Siguientes(<A>)
1. <S> -> <N> <C> a b c $
2. <N> -> <A> <N> no a c b $
3. <N> -> <B> <N> a b c
4. <N> ->
5. <A> -> a no a a b c $
6. <A> -> c no c
7. <B> -> b <A> <B> no b a b c $
8. <B> ->
9. <C> -> b no b $
10. <C> ->


Tabla de análisis $ a b c
<S> 1 1 1 1
<N> 3, 4 2, 3 3, 4 2, 3
<A>
5
6
<B> 8 8 7, 8 8
<C> 10
9

Hay varios conflictos en la tabla de análisis, y por tanto la gramática no es LL(1).