Tema 3: Análisis sintáctico - Ejercicios de modelado sintáctico con GPDR
Solución del ejercicio 3.A
Empleando partes derechas regulares:
<Fichero> -> <Linea> <Linea>
<Linea> -> (tab ele ?)+ eol
Alternativamente:
<Fichero> -> <Linea> <Linea>
<Linea> -> <Posicion>+ eol
<Posicion> -> tab ele ?
Eliminando partes derechas regulares obtenemos una gramática
incontextual:
<Fichero> -> <Linea> <Linea>
<Linea> -> <Posicion> <MasPosiciones> eol
<MasPosiciones> -> <Posicion> <MasPosiciones>
<MasPosiciones> ->
<Posicion> -> tab <ElementoOpcional>
<ElementoOpcional> -> ele
<ElementoOpcional> ->
Solución del ejercicio 3.B
Con la gramática anterior, la restricción adicional del apartado B la
podríamos verificar a nivel semántico. Pero este es un ejemplo que se
puede resolver también a nivel sintáctico, modificando la gramática,
y eso es lo que nos piden:
<Fichero> -> <DosLineas> eol
<DosLineas> -> <Posicion> <DosLineas> <Posicion>
<DosLineas> -> <Posicion> eol <Posicion>
<Posicion> -> tab <ElementoOpcional>
<ElementoOpcional> -> ele
<ElementoOpcional> ->