- stahnete si http://www.antlr.org/download/antlrworks-1.4.jar - pustte: java -jar antlrworks-1.4.jar - otevrete prislusny soubor *.g - Format *.g souboru: - za klicovym slovem grammar musi byt nazev otevreneho souboru - options { k=1;} nastavuje, ze chcete delat LL(k)=LL(1) analyzu (viz Example_4_15.g) - slova jsou neterminaly, oddeluji se mezerami (slova velkymi pismeny se uzivaji pro specificke neterminaly, tak jsem neterminaly psal malymi pismeny) - terminaly jsou v apostrofech (napr. 'a') takze A -> aBC | BabC se zapise treba jako: neterminal_a : 'a' net_b netrm_c | net_b 'a' 'b' netrm_c ; nebo: a : 'a' b c | b 'a' 'b' c ; - neterminal s oznacite jako korenovy neterminal takto: init : s '\n'; (dulezity neni nazev init, ale to, ze konci novym radkem '\n') - kontrolu najdete v menu Grammar -> Grammar_check (nebo CTRL + r ) - dalsi priklady ze sbirky jiste zvladnete podle uvedenych vytvorit - nema smysl se snazit o generovani parseru, to byste tam jeste museli neco pripsat - realny priklad s konflikty najdete v souboru Z120.g, zde se navic v gramatice pouzivaji i synakticke zkratky - zavorky A -> 'a' ( B | C ) - iterace A -> ('b')* nebo tez A -> ('b')+ - alternativa oznacena jako "?", cili A -> (velmi)? maly semanticky totez, co iterace na {0,1} - realne priklady realnych gramatik (bez konfliktu) najdete na: http://www.antlr.org/grammar/list