fork download
  1. : else ( C: orig1 -- orig2 )
  2. postpone ahead ( С: orig1 orig2 ) \ отметили переход вперёд
  3. 1 cs-roll ( C: orig2 orig1 ) \ поменяли ссылки на стеке местами
  4. postpone then ( C: orig2 ) \ разрешили ссылку вперёд,
  5. ; immediate
  6.  
  7. : while ( C: dest -- orig dest )
  8. postpone if ( C: dest orig ) \ отметили переход вперёд
  9. 1 cs-roll ( C: orig dest ) \ поменяли ссылки местами
  10. ; immediate
  11.  
  12. : repeat ( C: orig dest -- )
  13. postpone again ( C: orig ) \ разрешили переход назад
  14. postpone then ( C: ) \ разрешили переход вперёд
  15. ; immediate
  16.  
  17.  
  18. .( test if else then:) cr
  19. : .sign ( n -- )
  20. dup 0<
  21. if
  22. ." negative"
  23. else
  24. dup 0=
  25. if
  26. ." zero"
  27. else
  28. ." positive"
  29. then
  30. then drop cr ;
  31.  
  32. -42 .sign
  33. 0 .sign
  34. 100500 .sign
  35. cr
  36.  
  37. .( test begin while repeat:) cr
  38. : .count ( u -- )
  39. begin
  40. dup
  41. while
  42. dup .
  43. 1-
  44. repeat
  45. drop ." done." cr ;
  46.  
  47. 5 .count
  48. 1 .count
  49. 0 .count
Success #stdin #stdout #stderr 0s 22520KB
stdin
Standard input is empty
stdout
test if else then:
negative
zero
positive

test begin while repeat:
5 4 3 2 1 done.
1 done.
done.
stderr
redefined ELSE with else  redefined WHILE with while  redefined REPEAT with repeat