простой ответ: нет, мы не можем ...
В путь разбора работы, это, возможно, потребуется откат к предшествующей части входной строки, которая может фактически быть руководителем полного ввода, когда он встречает последний символ потока.
порты копируют свои данные в строковый буфер, так как они получают свой вход из порта, поэтому на самом деле никогда не существует «предшествующей» строки для синтаксического анализа для отката. его как квантовая физика ... просто глядя на нее, ее больше нет.
Но, как вы знаете, в rebol ... нет, это не ответ. ;-)
Это, как говорится, есть способ, чтобы обрабатывать данные из порта, как его время схватил, но его немного больше работы.
, что вы делаете, это использовать буфер, и
APPEND buffer COPY/part connection amount
В зависимости от ваших данных, сумма может быть 1 байт или 1KB, использовать то, что имеет смысл.
Как только новый ввод добавляется в буфер, проанализируйте его и добавьте логику, чтобы узнать, соответствует ли вам часть этого буфера.
Если что-то положительно согласовано, вы удаляете/разделяете то, что согласовано с буфером, и продолжайте синтаксический анализ, пока ничего не разберется.
вы затем повторяете выше, пока не достигнете конца ввода.
Я использовал это на сервере tcp реального времени EDI, который имеет «всегда включен» порт tcp, чтобы разбить (потенциально) непрерывный поток входных данных, который фактически копирует сообщения до конца ,
детали
Лучший способ установки этой системы не использовать/не ждать и петли до закрытий порта (вы не получите ни вместо «»).
Кроме того, убедитесь, что у вас есть способ проверить проблемы с целостностью данных (например, пропущенный байт или ошибочное сообщение) при разборе, в противном случае вы будете никогда достичь конца.
В моей системе, когда буфер был за пределами определенного размера, я попробовал альтернативное правило, которое пропускало байты до тех пор, пока шаблон не сможет найти дальше по потоку. Если он был найден, была зарегистрирована ошибка, сохраненное частичное сообщение и предупреждение для sysadmin для сортировки сообщения.
HTH!
Может быть, вы должны добавить пожелание в базу данных CureCode: http://curecode.org/rebol3/ – Oldes