В Forth, сколько символов читает "ожидание"?

спецификация 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 ). Это возвращает количество прочитанных символов, чего я и ожидал. Но этого нет в спецификации...


person David Given    schedule 14.07.2015    source источник
comment
Если память, на которую указывает addr, была очищена от всех нулей, то последующее определение длины строки — это вопрос нахождения первого оставшегося нуля.   -  person Michael    schedule 14.07.2015


Ответы (1)


стандарт также определяет SPAN, указывающее количество символов читать.

Также обратите внимание, что в новом стандарте эта функция устарела, вместо нее используйте ACCEPT.

person vukung    schedule 26.07.2015
comment
Да, я смотрел не на ту спецификацию. Спецификация ANS намного лучше разработана (хотя и почти непонятна). - person David Given; 26.07.2015