Liste des Groupes | Revenir à cl forth |
On 2025-05-05 08:11, dxf wrote:...
However modifying it to do so gives these results:
>
1 .( a ) cr -56 throw .( b )
>
'a' is displayed and the stack is: 1
This violates the behavior of `throw` specified in 9.6.1.2275,
because if there is no a user's exception frame, the data stack must be emptied.
The table 9.1 in Forth-2012 (or 9.2 in Forth-94) does not affect the behavior of `throw` at all.
Your implementation will probably fail the following test case:
t{ 123 [: 999 -56 throw ;] catch 456 -> 123 -56 456 }t
: bar 4 quit ; ' bar catch 6
>
stack is: -56 6
>
This violates `quit` 6.1.2050, because:
- `quit` is not allowed to remove anything from the data stack (in this case, remove 4 from the stack);
- `quit` is not allowed to place anything on the data stack (in this case, place `-56`);
- `quit` is not allowed to interpret the remaining part of the input buffer (in this case, interpret "6" and place 6 on the stack).
Les messages affichés proviennent d'usenet.