Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. \ Êîíñòðóêöèÿ âûáîðà CASE
  2. \ ñ ó÷åòîì âîçìîæíîé âëîæåííîñòè îïåðàòîðîâ CASE
  3.  
  4.  
  5. DECIMAL
  6. VARIABLE   CSP    \ Óêàçàòåëü ñòåêà êîíòðîëÿ
  7. 6 CONSTANT L-CAS# \ Äîïóñòèìûé óðîâåíü âëîæåííîñòè
  8. CREATE     S-CSP   L-CAS# CELLS ALLOT \ Ñòåê êîíòðîëÿ
  9. S-CSP CSP !
  10.  
  11. : +CSP ( -> P)    \ Äîáàâèòü óðîâåíü
  12.   CSP @ DUP CELL+ CSP !
  13. ;
  14. : -CSP ( -> )     \ Óáðàòü óðîâåíü
  15.   CSP @ 1 CELLS - CSP !
  16. ;
  17.  
  18. : !CSP ( -> )     \ Èíèöèàëèçèðîâàòü óðîâåíü
  19.   SP@ +CSP !
  20. ;
  21.  
  22. : CSP@ ( -> A)
  23.   CSP @ 1 CELLS - @
  24. ;
  25. : ?CSP ( -> )     \ Ïðîâåðèòü âûäåðæàííîñòü ñòåêà
  26. \  SP@ CSP@ <> 37 ?ERROR ( ABORT" Ñáîé ñòåêà ïî CSP !")
  27.   -CSP
  28. ;
  29. : CASE ( -> )
  30.   !CSP
  31. ; IMMEDIATE
  32. : OF
  33.   POSTPONE OVER POSTPONE =
  34.   [COMPILE] IF POSTPONE DROP
  35. ; IMMEDIATE
  36. : ENDOF
  37.   [COMPILE] ELSE
  38. ; IMMEDIATE
  39. : ENDCASE
  40.   POSTPONE DROP BEGIN SP@ CSP@ =
  41.   0=  WHILE  [COMPILE] THEN  REPEAT -CSP
  42. ; IMMEDIATE
  43.