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 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> ->