Hm, není mi jasné, proč si autor zavádí vlastní stavovou proměnnou, lexer se dá triviálně napsat i bez ní (resp. stavovou proměnnou je program counter), několikrát jsem to tak dělal. A tohle nevypadá jako něco, co by se za dvě hodiny nedalo napsat ručně.
LT 2011/4/12 Tomas Studva <[email protected]> > Tak, tak. Urcite aby ma povodny programator co najviac potrapil :). Je to > tak ako pisete, for(;;) je while(true) a break vyskoci iba zo switchu. break > look, skoci na navestie. Som zvedavy ake perly ma este cakaju. Inak v > dnesnej dobe pisat parser ak sa jedna o nieco zlozitejsie je vhodne pomocou > lexem a gramatiky definovanej v nejakom jazyku. > > 2011/4/11 Robert Novotny <[email protected]> > >> Break z loopu sa da pouzit na vyskocenie z vnorenych cyklov cez viacero >> urovni. Nie je to nahodou preto, ze klasicky break by vyskocil zo switchu, >> ale nie z loopu? >> >> Otazka je, preco je tam break z poslednej vetvy switchu, ked za nou uz >> nejde nic? >> >> A preco je tam c-ckarsky for(;;) namiesto while(true)? >> >> Je pozoruhodne, ze >> >> On 11. 4. 2011 16:57, Tomas Studva wrote: >> >> Dobry den, >> vedeli by ste si precitat nasledovny program. Nie je to priklad zo skoly >> ale z praxe. Implementacia stavoveho automatu, kod je stary 10 rokov a >> samozrejme ze to je len nezmyselny uryvok. >> >> state = -1; >> loop: *for* (;;) { >> >> state = state + 1; >> >> *switch* (state) { >> *case* 0: state = 1; break; >> >> case 1: state = 0 *break*; >> >> case 2: break loop; >> >> } >> >> } >> >> Pre mna to je nieco velmi vynimocne, lebo je tam navestie a tiez ten for. >> >> S pozdravom Tomas >> >> >> >
