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> -> | sí |
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> -> | sí |
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> -> | sí |
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> | sí | a b c | $ |
2. <N> -> <A> <N> | no | a c | b $ |
3. <N> -> <B> <N> | sí | a b c | |
4. <N> -> | sí | ||
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> -> | sí | ||
9. <C> -> b | no | b | $ |
10. <C> -> | sí |
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).