Hash :
acf5213f
Author :
Date :
2006-10-14T20:31:53
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
\ Test case of a branch going over too large a range
\ Body generated by script.
\ (Numeric values, argument of 232 just exceeds the inner branches.)
\ (Numeric values, argument of N >= 233 exceeds them all.)
\ (Verbal argument of 179 just exceeds the inner branches.)
\ (Verbal argument of N >= 180 exceeds them all.)
\ Command-line definition of 'fld_cmd' should be of the form 'fload <filename>'
\ and can be used to load variable-sized bodies.
\ Default will be TooLargeBranch_off16_body.fth
fcode-version2 \ Sixteen-bit offsets.
headers
: too-large-case ( n -- )
." Let's give it a large back-reference too."
begin ." We've just begun"
." 1 0 do " cr 1 0 do
dup ." if " cr
if
dup ." case"
case
0 of ." Just a short case" cr endof
." default. The Big One!" cr
[ifndef] fld_cmd
fload TooLargeBranch_off16_body.fth
[else]
[defined] fld_cmd
[endif]
endcase
." then"
then
." Loop back and forward" cr loop
." And here we are!"
exit
." Well, we needed some way out!"
again ." Back to the fuchsia."
;
\ Let's make a small jump, just to see what normal looks like
: control-example
." Small non-loop"
begin ." Here's the beguine"
dup ." if "
if
dup ." case"
case
0 of ." Just a short case" cr endof
." default. Normal one!" cr
endcase
." then"
then
." and the way out"
exit
." and the jump back"
again ." Never do this" cr
;
fcode-end