спецификация Forth-83 определяет слово expect
следующим образом:
EXPECT addr +n -- M,83
Receive characters and store each into memory. The transfer
begins at addr proceeding towards higher addresses one byte
per character until either a "return" is received or until
+n characters have been transferred. No more than +n
characters will be stored. The "return" is not stored into
memory. No characters are received or transferred if +n is
zero. All characters actually received and stored into
memory will be displayed, with the "return" displaying as a
space.
Таким образом, он читается до, но не включая, RETURN или EOL.
Но без терминатора и без возврата количества прочитанных символов, как мне узнать, где заканчивается строка?
Лео Броди ссылается на слово accept
, которое делает что-то очень похожее и имеет сигнатуру ( addr +n -- +m )
. Это возвращает количество прочитанных символов, чего я и ожидал. Но этого нет в спецификации...
addr
, была очищена от всех нулей, то последующее определение длины строки — это вопрос нахождения первого оставшегося нуля. - person Michael   schedule 14.07.2015