Re: Java fór
Ano, to bol zjednoduseni priklad, nechcel som zverejnit original kod, ale sak preco nie, aj tak bude kazdemu na dve veci, za formatovanie sa ospravedlnujem, rozpadlo sa: *static* Token Scan() { *int* state, *apx*; *StringBuffer* buf; *while* (*ignore*.get((*int*)*ch*)) *NextCh*(); *if* ((*ch* == '/') *Comment*()) *return* *Scan*(); *t* = *new* Token(); *t*.pos = *pos*; *t*.col = *pos* - *lineStart* + 1 - *offset*; *t*.line = * line*; buf = *new* StringBuffer(); state = *start*[*ch*]; apx = 0; loop: *for* (;;) { buf.append(*strCh*); *NextCh*(); *switch* (state) { *case* 0: {*t*.kind = *noSym*; *break* loop;} // NextCh already done *case* 1: *if* (*ch* == '-' || *ch* = '0' *ch* = '9' || *ch* = 'A' *ch* = 'Z' || *ch* == '_' || *ch* = 'a' *ch* = 'z') {*break*;} *else* *if* (*ch* == '/') {state = 15; *break*;} *else* {*t*.kind = 1; *CheckLiteral*(buf); *break* loop;} *case* 2: *if* (*ch* = '0' *ch* = '9') {state = 3; *break*;} *else* {*t*.kind = *noSym*; *break* loop;} *case* 3: *if* (*ch* = '0' *ch* = '9') {*break*;} *else* *if* (*ch* == '.') {state = 4; *break*;} *else* {*t*.kind = *noSym*; *break* loop;} *case* 4: *if* (*ch* = '0' *ch* = '9') {state = 5; *break*;} *else* {*t*.kind = *noSym*; *break* loop;} *case* 5: *if* (*ch* = '0' *ch* = '9') {*break*;} *else* {*t*.kind = 3; *break* loop;} *case* 6: *if* (*ch* = 9 || *ch* = 11 *ch* = 12 || *ch* = 14 *ch* = '!' || *ch* = '#') {*break*;} *else* *if* (*ch* == '') {state = 8; *break*;} *else* {*t*.kind = *noSym*; *break* loop;} *case* 7: *if* (*ch* = 9 || *ch* = 11 *ch* = 12 || *ch* = 14 *ch* = '' || *ch* = '(') {*break*;} *else* *if* (*ch* == 39) {state = 8; *break*;} *else* {*t*.kind = *noSym*; *break* loop;} *case* 8: {*t*.kind = 4; *break* loop;} *case* 9: *if* (*ch* = '0' *ch* = '9') {*break*;} *else* *if* (*ch* == '.') {state = 4; *break*;} *else* {*t*.kind = 2; *break* loop;} *case* 10: {*t*.kind = 7; *break* loop;} *case* 11: {*t*.kind = 12; *break* loop;} *case* 12: {*t*.kind = 13; *break* loop;} *case* 13: {*t*.kind = 14; *break* loop;} *case* 14: {*t*.kind = 15; *break* loop;} *case* 15: *if* (*ch* == 'F') {state = 16; *break*;} *else* {*t*.kind = *noSym*; *break* loop;} *case* 16: *if* (*ch* == 'I') {state = 17; *break*;} *else* {*t*.kind = *noSym*; *break* loop;} *case* 17: *if* (*ch* == 'N') {state = 18; *break*;} *else* {*t*.kind = *noSym*; *break* loop;} *case* 18: *if* (*ch* == 'P') {state = 19; *break*;} *else* {*t*.kind = *noSym*; *break* loop;} *case* 19: *if* (*ch* == 'E') {state = 20; *break*;} *else* {*t*.kind = *noSym*; *break* loop;} *case* 20: *if* (*ch* == 'R') {state = 21; *break*;} *else* {*t*.kind = *noSym*; *break* loop;} *case* 21: *if* (*ch* == 'I') {state = 22; *break*;} *else* {*t*.kind = *noSym*; *break* loop;} *case* 22: *if* (*ch* == 'O') {state = 23; *break*;} *else* {*t*.kind = *noSym*; *break* loop;} *case* 23: *if* (*ch* == 'D') {state = 24; *break*;} *else* {*t*.kind = *noSym*; *break* loop;} *case* 24: {*t*.kind = 19; *break* loop;} *case* 25: {*t*.kind = 27; *break* loop;} *case* 26: {*t*.kind = 28; *break* loop;} *case* 27: {*t*.kind = 29; *break* loop;} *case* 28: {*t*.kind = 30; *break* loop;} *case* 29: {*t*.kind = 0; *break* loop;} } } *t*.str = buf.toString(); *t*.val = *t*.str.toUpperCase(); *return* *t*; } 2011/4/11 Zdeněk Troníček troni...@fit.cvut.cz Ahoj, automat by měl mít číst něco ze vstupu. Nechybí tam někde vstup? Z. -- Zdenek Tronicek FIT CTU in Prague Tomas Studva napsal(a): 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
Re: Java fór
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 robert.novo...@upjs.sk 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
Re: Java fór
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 tstu...@gmail.com 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 robert.novo...@upjs.sk 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
Re: Java fór
Dne 12.4.2011 09:31, Tomas Studva napsal(a): 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. Zas tak exotické to není. Break s návěštím se používá typicky v případě, že už není nutné dál iterovat, protože jsme našli, co jsme hledali, tj. např: int[][][] pole3D = new int[5][7][9]; pole3D[3][6][8] = 42; TRI_SMYCKY: for (int i = 0; i pole3D.length; i++) { for (int j = 0; j pole3D[i].length; j++) { for (int k = 0; k pole3D[i][j].length; k++) { if(pole3D[i][j][k]==42) { System.out.println(Našli jsme základní odpověď života, vesmíru a vůbec všeho !); break TRI_SMYCKY; } } } } Makub -- ~~ Supercomputing Center Brno Martin Kuba Institute of Computer Scienceemail: ma...@ics.muni.cz Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 -- smime.p7s Description: S/MIME Cryptographic Signature
Re: Java fór
V jednej starukej knihe o "Opravdovch programtorech a pojdach kol" bola u dvno veta, e "Opravdov programtoi se neboj pkazu GOTO :-) A myslm, e je to pravda. Na vyskoenie z najvntornejieho cyklu nie je ni lepie. Rastislav "Bedo" Siekel Ing. Rastislav Siekel Prosoft s.r.o., Kuzmnyho 8, 010 01 ilina, Slovakia E-mail : sie...@prosoft.sk Tel : 041/562 54 91 Fax : 041/562 54 97 Mobil : 0905 34 00 20 On 12. 4. 2011 9:31, Tomas Studva wrote: Tak, tak. Urciteaby 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 robert.novo...@upjs.sk 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
Re: Java fór
Ale je: return Všechny příklady zde uvedené jsou ideální kandidáti na rozdělení do menších metod. Kamil Podlešák 2011/4/12 Rastislav Siekel sie...@prosoft.sk V jednej staručkej knihe o Opravdových programátorech a pojídačích koláčů bola už dávno veta, že Opravdoví programátoři se nebojí příkazu GOTO :-) A myslím, že je to pravda. Na vyskočenie z najvnútornejšieho cyklu nie je nič lepšie. Rastislav Bedo Siekel -- Ing. Rastislav Siekel Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia E-mail : sie...@prosoft.sk sie...@prosoft.sk Tel : 041/562 54 91 Fax : 041/562 54 97 Mobil : 0905 34 00 20 On 12. 4. 2011 9:31, Tomas Studva wrote: 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 robert.novo...@upjs.sk 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
Re: Java fór
Tak teraz si ma dostal :-D Ale určite by sa dal nájsť príklad, keď je ten BREAK zrozumiteľnejší. Len mi teraz just žiadny nenapadne... ;-) Rastislav "Bedo" Siekel Ing. Rastislav Siekel Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia E-mail : sie...@prosoft.sk Tel : 041/562 54 91 Fax : 041/562 54 97 Mobil : 0905 34 00 20 On 12. 4. 2011 9:56, Kamil Podlesak wrote: Ale je: return Všechny příklady zde uvedené jsou ideální kandidáti na rozdělení do menších metod. Kamil Podlešák 2011/4/12 Rastislav Siekel sie...@prosoft.sk V jednej staručkej knihe o "Opravdových programátorech a pojídačích koláčů" bola už dávno veta, že "Opravdoví programátoři se nebojí příkazu GOTO :-) A myslím, že je to pravda. Na vyskočenie z najvnútornejšieho cyklu nie je nič lepšie. Rastislav "Bedo" Siekel Ing. Rastislav Siekel Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia E-mail : sie...@prosoft.sk Tel : 041/562 54 91 Fax : 041/562 54 97 Mobil : 0905 34 00 20 On 12. 4. 2011 9:31, Tomas Studva wrote: 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 robert.novo...@upjs.sk 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
Re: Java fór
2011/4/12 Kamil Podlesak kamil.podle...@gmail.com: Ale je: return Všechny příklady zde uvedené jsou ideální kandidáti na rozdělení do menších metod. jj, to tvrdi i Linux Torvalds: if you need more than 3 levels of indentation, you're screwed anyway, and should fix your program. :-) Kamil Podlešák 2011/4/12 Rastislav Siekel sie...@prosoft.sk V jednej staručkej knihe o Opravdových programátorech a pojídačích koláčů bola už dávno veta, že Opravdoví programátoři se nebojí příkazu GOTO :-) A myslím, že je to pravda. Na vyskočenie z najvnútornejšieho cyklu nie je nič lepšie. Rastislav Bedo Siekel Ing. Rastislav Siekel Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia E-mail : sie...@prosoft.sk Tel : 041/562 54 91 Fax : 041/562 54 97 Mobil : 0905 34 00 20 On 12. 4. 2011 9:31, Tomas Studva wrote: 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 robert.novo...@upjs.sk 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 -- Ondra Medek
Re: Java fór
2011/4/12 Ondra Medek xmed...@gmail.com 2011/4/12 Kamil Podlesak kamil.podle...@gmail.com: Ale je: return Všechny příklady zde uvedené jsou ideální kandidáti na rozdělení do menších metod. jj, to tvrdi i Linux Torvalds: if you need more than 3 levels of indentation, you're screwed anyway, and should fix your program. :-) Tady je vidět, že v životě neprogramoval optimalizace nad polydimenzionálními vektory pro superstringy :-D Sedm vnořených cyklů s mnoha break a continue na návěští je celkem běžné řešení. Rychlost a čitelnost a jednoduchost jsou hlavními rysy tohoto řešení. Implementovat WebServer v jedné metodě je ale zase opačný extrém :-D Kamil Podlešák 2011/4/12 Rastislav Siekel sie...@prosoft.sk V jednej staručkej knihe o Opravdových programátorech a pojídačích koláčů bola už dávno veta, že Opravdoví programátoři se nebojí příkazu GOTO :-) A myslím, že je to pravda. Na vyskočenie z najvnútornejšieho cyklu nie je nič lepšie. Rastislav Bedo Siekel Ing. Rastislav Siekel Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia E-mail : sie...@prosoft.sk Tel : 041/562 54 91 Fax : 041/562 54 97 Mobil : 0905 34 00 20 On 12. 4. 2011 9:31, Tomas Studva wrote: 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 robert.novo...@upjs.sk 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 -- Ondra Medek -- Oto 'tapik' Buchta, ta...@buchtovi.cz, http://tapikuv.blogspot.com
Re: Java fór
Ja ked som potreboval lexer, tak som si ho nechal vygenorovat, lebo bolo treba aj parser (to je aj tento pripad). Ale je to zaujimavy postreh. Myslite jednotlive stavy definovat ako metody? 2011/4/12 Ladislav Thon ladi...@gmail.com 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 tstu...@gmail.com 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 robert.novo...@upjs.sk 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
Re: Java fór
Jasně, buďto jako metody, nebo i jen jednotlivé větve toho switche. ANTLR samozřejmě rulez :-) LT 2011/4/12 Tomas Studva tstu...@gmail.com Ja ked som potreboval lexer, tak som si ho nechal vygenorovat, lebo bolo treba aj parser (to je aj tento pripad). Ale je to zaujimavy postreh. Myslite jednotlive stavy definovat ako metody? 2011/4/12 Ladislav Thon ladi...@gmail.com 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 tstu...@gmail.com 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 robert.novo...@upjs.sk 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
Java fór
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
Re: Java fór
Ahoj, automat by měl mít číst něco ze vstupu. Nechybí tam někde vstup? Z. -- Zdenek Tronicek FIT CTU in Prague Tomas Studva napsal(a): 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