В первом приближении - аргументы слов. Описывается до первого использования в любом месте в виде
code forth
: word (( arg1 arg2 ... argN -- out1 out2 ... outN ))
arg1 operation
arg2 argN operation \ ...
\ ...
;
параметры со стека снимаются в указанном порядке и записываются в указанные uvalue-переменные.
Осторожно. Каждое использование новой переменной аргумента стирает из словарей предыдущие упоминания одноимённого слова. Поэтому обычная рекомендация - для аргументов используйте имена попроще, для слов - посложнее
Использовать конструкцию (( .. )) можно несколько раз в слове. Каждый раз она будет снимать со стека N аргументов и раскладывать их в переменные.
Помните также, что эта конструкция несколько снижает быстродействие.
code forth
: hcoords-randomize (( x y z h diff -- x1 y1 z h ))
x y z diff coords-randomize
h
;
В Fortress закину теперь уже, наверное, только послезавтра. Или сами кто-нибудь закиньте jbforth.jar из
JBForth в libs каталог L2Fortress.