Vous êtes sur la page 1sur 2

1) Pasar a Convencional

Programa ::= Instruccion; {Instruccion;}


Programa -> Instruccion; InstrPrograma
InstrPrograma -> Instruccion; InstrPrograma | eps
Instruccion
Instruccion
Instruccion
Instruccion
Instruccion

::=InstrVuelta |InstrAvanza |InstrSiChocas |InstrObjeto


-> InstrVuelta
-> InstrAvanza
-> InstrSiChocas
-> InstrObjeto

InstrVuelta ::= "VDER" | "VIZQ"


InstrVuelta -> "VDER"
InstrVuelta -> "VIZQ"
InstrAvanza ::= "AVANZA" "Num"
InstrAvanza -> "AVANZA" "Num"
InstrSiChocas ::= "SI_CHOCAS" Instruccion
InstrSiChocas -> "SI_CHOCAS" Instruccion
InstrObjeto ::= "RECOGE" | "DEJA"
InstrObjeto -> "RECOGE"
InstrObjeto -> "DEJA"
2) Calcular el First
NT
| First(NT)
First(Programa) = { vder, vizq, avanza, recoje, deja, si_chocas }
First(InstrPrograma) = { vder, vizq, avanza, recoje, deja, si_chocas, eps }
First(Instruccion) = { vder, vizq, avanza, recoje, deja, si_chocas }
First(InstrVuelta) = { vder, vizq }
First(InstrAvanza) = { avanza }
First(InstrSiChocas) = { si_chocas }
First(InstrObjeto) = { recoje, deja }
3) Calcular el Follow
NT
| Follow(NT)
Programa { $ }
InstrPrograma = Follow(Programa) + Follow(InstrPrograma) = Follow (Programa) = {
$ }
Instruccion = { ; } + Follow(InstrSiChocas)
= { ; } + Follow(Instruccion)
= { ; }
InstrVuelta = Follow(Instruccion)
= { ; }
InstrAvanza = Follow(Instruccion)
= { ; }
InstrSiChocas = Follow(Instruccion)
= { ; }
InstrObjeto = Follow(Instruccion)
= { ; }
-------------

NT
| Follow(NT)
Programa
{ $ }
InstrPrograma { $ }
Instruccion
{ ; }
InstrVuelta
{ ; }
InstrAvanza
{ ; }
InstrSiChocas { ; }
InstrObjeto
{ ; }

Vous aimerez peut-être aussi