Re: Java fór

2011-04-12 Tema obsahu Tomas Studva
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

2011-04-12 Tema obsahu Tomas Studva
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-04-12 Tema obsahu Ladislav Thon
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

2011-04-12 Tema obsahu Martin Kuba

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

2011-04-12 Tema obsahu Rastislav Siekel


  
  
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

2011-04-12 Tema obsahu Kamil Podlesak
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

2011-04-12 Tema obsahu Rastislav Siekel


  
  
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-04-12 Tema obsahu Ondra Medek
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-04-12 Tema obsahu Oto Buchta
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

2011-04-12 Tema obsahu Tomas Studva
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

2011-04-12 Tema obsahu Ladislav Thon
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

2011-04-11 Tema obsahu Tomas Studva
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-04-11 Tema obsahu Zdeněk Troníček
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