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