[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