break
BREAK/CONTINUE-Statements for Standard Forth
- raw README.md
- raw break-tests.fs
- raw break.fs
- raw glossary.md
- raw mit-license
- raw package.4th
- raw ttester-simple.fs
\ Test BREAK and CONTINUE control structures include ttester-simple.fs include break.fs : noloop 5 = IF 1 BREAK THEN 0 ; t{ 3 noloop -> 0 }t t{ 5 noloop -> 1 }t : begin1 10 BEGIN dup 5 = IF BREAK THEN dup 1 - AGAIN 99 ; t{ begin1 -> 10 9 8 7 6 5 99 }t : begin2 >r 10 BEGIN dup r@ - WHILE dup 3 = IF BREAK THEN dup 1 - REPEAT r> drop 99 ; t{ 5 begin2 -> 10 9 8 7 6 5 99 }t t{ 1 begin2 -> 10 9 8 7 6 5 4 3 99 }t : begin3 10 BEGIN dup 3 = IF break THEN dup 5 = IF BREAK THEN dup 1- AGAIN 99 ; t{ begin3 -> 10 9 8 7 6 5 99 }t : begin4 >r 10 BEGIN dup 3 = IF BREAK ELSE dup r@ = IF BREAK THEN THEN dup 1- AGAIN r> drop 99 ; t{ 5 begin4 -> 10 9 8 7 6 5 99 }t t{ 2 begin4 -> 10 9 8 7 6 5 4 3 99 }t : begin5 10 BEGIN dup 1 and IF dup 5 = IF BREAK THEN dup 3 = IF BREAK THEN THEN dup 1- dup 0= UNTIL 99 ; t{ begin5 -> 10 9 8 7 6 5 99 }t : continue1 ( -- ) 0 BEGIN 1+ dup dup 5 = IF drop 55 swap CONTINUE 777 THEN dup 7 = UNTIL drop 999 ; t{ continue1 -> 1 2 3 4 55 6 7 999 }t : collatz ( n -- i*x ) BEGIN ( n ) dup dup 1 - WHILE dup 1 and IF 3 * 1+ CONTINUE THEN 2/ REPEAT drop ; t{ 3 collatz -> 3 10 5 16 8 4 2 1 }t : doloop1 ( -- ) 10 0 DO I 5 = IF BREAK THEN I LOOP ; : doloop2 ( -- ) 10 0 DO I 5 = IF BREAK THEN I 3 = IF BREAK THEN I LOOP ; t{ doloop1 -> 0 1 2 3 4 }t t{ doloop2 -> 0 1 2 }t : doloop3 ( -- ) 10 0 DO I 5 = IF CONTINUE THEN I LOOP 99 ; t{ doloop3 -> 0 1 2 3 4 6 7 8 9 99 }t : continue-+loop ( -- ) 10 0 DO I 8 = IF BREAK THEN I 4 = IF 2 CONTINUE THEN I 2 +LOOP 99 ; t{ continue-+loop -> 0 2 6 99 }t : eaker0 ( -- ) 10 0 DO I 2 over = IF drop 22 22 CONTINUE ELSE 3 over = IF drop 33 33 CONTINUE ELSE 4 over = IF drop 44 ELSE 5 over = IF drop 55 BREAK ELSE dup drop THEN THEN THEN THEN 88 LOOP 99 ; t{ eaker0 -> 0 88 1 88 22 22 33 33 44 88 55 99 }t : eaker1 ( -- ) 10 0 DO I CASE 2 OF 22 22 CONTINUE ENDOF 3 OF 33 33 CONTINUE ENDOF 4 OF 44 ENDOF 5 OF 55 BREAK ENDOF dup ENDCASE 88 LOOP 99 ; t{ eaker1 -> 0 88 1 88 22 22 33 33 44 88 55 99 }t .( break tests done ) cr
by UlrichHoffmann
Versions
Tags
forth-94, forth-2012, ansforth, controlstructures
Dependencies
None
Dependents
None