kto mi vysvetli ako spravit 10. cviko? ale ziadne omacky ale priamo step by step, nemam cas lustit hadanky
snad ti napomoze cast mojej komunikaci so spoluziakom, ktory tomu tiez nie velmi rozumel:
startovaci symbol je Model
cize pojdes to triedy model a do konstruktora das @Range(minOccurs =1), kedze v ebnf je zapisane entity+ a to vyjadruje, ze model musi obsahovat aspon jednu entitu
tzn. ze konstruktor Model musi mat pred Entity[] entities anotaciu @Range(minOccurs = 1)
model by bol vyrieseny a ides hlbsie, kedze parametrom modelu je objekt typu Entity, tak ides do tej triedy
a teraz vidis, ze v ebnf je Entity rozpisana ako ako 'entity' <NAME> ...
to znamena ze pred konstruktor das anotaciu before a ako parameter je das ENTITY (ked si blizsie pozries ten subor package-info.java, tak tam su definovane lexikalne jednotky a pod tokenom ENTITY sa skryva entity)
a teraz v konstruktori prvy parameter je name, cize to uz bude @Token("NAME")
a potom ide 1 a viac properties
cize ked pozries ebnf, tak tam najprv vidis {
cize pred Property[] properties das @Before("LBR") a zaroven aj @After("RBR"), lebo zatvrokami koncia aj definovanie entity v ebnf
a este tam das @Range(minOccurs = 1), lebo entita musi mat aspon jednu property podla ebnf
Snad by ti to uz malo byt jasne. Teraz uvidis vyhodu vyuzitia tohto generatora oproti vlastnemu krkolomnemu parseru, ktory sme robili na zaciatku ;-)
Ked to budes mat cele, tak pozri subor grammar.ebnf a mal byt taky isty ako je v tom 10. cviku (niektore zatvorky si mozes odmysliet v tej vygenerovanej gramatike) a este to co je na stranke ako Entity+ budes mat vo svojej gramatike ako (Entity (Entity)*). Potom uz len staci 2-krat skompilovat a nasledne spustit a nezabudni pridat do konstruktora vytvorenie toho parsera ako je v 5. tej ulohe.