[nem-pl] Re: C# => Nemerle
Ryszard Trojnacki
rysiek at menel.com
Sat Mar 27 17:05:02 CET 2004
PR> A moze jakos tak:
PR> fun(...){
PR> 0:
PR> AAA
PR> 1: while(x)
PR> {
PR> BBB
PR> goto 0
PR> CCC
PR> }
PR> }
PR> na:
PR> fun(...)
PR> {
PR> goto (r:int*bool ,... )
PR> {
PR> match(r)
PR> {
PR> | 0,_ =>
PR> AAAA
PR> goto(1,x)
PR> | 1,true =>
PR> BBBB
PR> goto(0,x)
PR> CCCC
PR> goto(1,x)
PR> | 1,false =>
PR> ()
PR> }
PR> }
PR> goto((0,true),....)
PR> }
PR> Skro while i inne i tak sa zamieniane na rekurencyjne, to moze
PR> zroibc krotke ktora opisuje dany aktualny przebieg (w ktorym while sie
PR> jest i po ktorym goto)
W taki sposub jest to chyba malo schematyczne i trudno by bylo
dopasowac do innych przypadkow.
Metoda jest stosunkowo prosta.
1. Pozybywanie sie goto/continue/break, ktore sa w tym samym segmencie
2. Wynoszenie skokow poza segmenty - az sie zrowna (czyli iteracyjne)
Fakt problem sie robi jak sa krzyzujace sie skoki, ale ten mechanizm
chyba tez zadziala lub bedzie potrzebowal drobnej poprawki.
PR> tak mi wpadlo, wracam do MD.
PR> Pawel
Pozdrawiam
Ryszard Trojnacki
mailto:rysiek at menel.com
http://www.rysiek.menel.com
More information about the devel-pl
mailing list