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

Tema 3: Análisis sintáctico - Ejercicios de modelado sintáctico con GPDR

Solución del ejercicio 4.A

Categoría léxica Expresión regular Emitir u omitir Atributos
suma \+ emitir
resta - emitir
multiplicación [xX] emitir
constante [0-7]+ emitir valor
variable [a-wyz] emitir lexema
abreParéntesis \( emitir
cierraParéntesis \) emitir
abreCorchete \[ emitir
cierraCorchete \] emitir

Solución del ejercicio 4.B

<Cad> -> abreCorchete abreCorchete <Expresión> cierraCorchete cierraCorchete
<Expresión> -> <Término> <Operador> <Expresión>
<Expresión> -> <Término>
<Operador> -> suma
<Operador> -> resta
<Operador> -> multiplicación
<Término> -> constante
<Término> -> variable
<Término> -> abreParéntesis <Expresión> cierraParéntesis
<Término> -> abreCorchete <Expresión> cierraCorchete

En esta solución la asociatividad por la derecha de los operadores se ha modelado mediante recursividad por la derecha, y el nivel de precedencia de los operadores se ha modelado haciendo que el no terminal <Operador> se reescriba como cualquiera de ellos. De este modo la gramática no es ambigua.

Como ejercicio adicional, piensa si es LL(1) y, en caso de no serlo, cómo resolverlo.