· Text 93 · w8 · inlagg
Ibland kan det vara praktiskt att använda flera WHILE inom samma
'BEGIN ... REPEAT'-slinga. Om nu inte Din FORTH klarar detta (Den
FORTH som klubben distribuerat klarar det INTE.) så kommer här
en omdefiniering av REPEAT och WHILE. OBS! REPEAT måste omdefinieras
före WHILE, eftersom REPEAT använder sig av WHILE vid omdefinieringen.
( MultiWHILE 3 Dec 85 Magnus Bodin )
: REPEAT ÄCOMPILEÅ AGAIN DUP 4
?PAIRS BEGIN DUP 4 =
WHILE 2 - ÄCOMPILEÅ ENDIF
REPEAT ; IMMEDIATE
: WHILE ÄCOMPILEÅ IF 2+ 2SWAP ;
IMMEDIATE
Så här använder man flera WHILE:
BEGIN
<huvudföljd>
<flagga#1 lämnas på stacken>
WHILE
<följd#1>
<flagga#2 lämnas på stacken>
WHILE
<följd#2>
.
.
<flagga#x lämnas på stacken>
WHILE
<följd#x>
REPEAT
Först utförs <huvudföld>.
Om flagga#1 är sann, utförs <följd#1>, annars fortsätter exekvering
efter REPEAT.
Om flagga#2 är sann, utförs <följd#2>, annars fortsätter exekvering
efter REPEAT.
Om flagga#x är sann, utförs <följd#x>, annars fortsätter exekvering
efter REPEAT.
Lycka till, FORTH är något som angår oss alla!
Magiska hälsningar Magnus