jumpforth/test/numeric-literals.4th

25 lines
764 B
Forth

: INSPECT ( c-addr u -- ) "\"" TYPE TYPE-ESCAPED "\"" TYPE ;
: REPORT ( c-addr1 u1 c-addr2 u2 xt -- )
-ROT 2>R >R 2DUP INSPECT " ( " TYPE EVALUATE DUP R@ EXECUTE " ) " TYPE
R> SWAP 2R> ROT >R ROT >R
2DUP INSPECT " ( " TYPE EVALUATE DUP R> EXECUTE " ) " TYPE
R> = IF " ✓\n" ELSE " ✗\n" THEN TYPE ;
: SREPORT [[ ' . ]] REPORT ;
: UREPORT [[ ' U. ]] REPORT ;
: TEST
"0" "0 DUP -" SREPORT
"4294967295" "0xFFFFFFFF" UREPORT
"-1" "0 1-" SREPORT
"-2147483648" "1 31 LSHIFT" SREPORT
"0177" "127" SREPORT
"0b1101101" "6 16 * 13 +" SREPORT
"0B1011110" "5 16 * 14 +" SREPORT
"0x5aa5a55a" "1520805210" SREPORT
"0Xa55a5aa5" "1520805210 INVERT" SREPORT
;
TEST