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 10

Este es un último ejemplo de algo que se suele tratar a nivel semántico, aunque nos piden hacerlo a nivel sintáctico:

<Prog> -> <Sent>
<Sent> -> id asigna <Expr> pyc
<Sent> -> IF <Expr> THEN <Sent>
<Sent> -> FOREVER DO <SentPermitiendoBreak>
<Sent> -> BEGIN <Lista> END
<Lista> -> <Sent> <Lista> |

<SentPermitiendoBreak> -> id asigna <Expr> pyc
<SentPermitiendoBreak> -> IF <Expr> THEN <SentPermitiendoBreak>
<SentPermitiendoBreak> -> FOREVER DO <SentPermitiendoBreak>
<SentPermitiendoBreak> -> BREAK pyc
<SentPermitiendoBreak> -> BEGIN <ListaPermitiendoBreak> END
<ListaPermitiendoBreak> -> <SentPermitiendoBreak> <ListaPermitiendoBreak> |

<Expr> -> <Base> <Mas>
<Mas> -> op <Base> <Mas> |
<Base> -> id | lit | apar <Expr> cpar