OberonCore
https://forum.oberoncore.ru/

i21sysIn
https://forum.oberoncore.ru/viewtopic.php?f=7&t=5397
Страница 1 из 1

Автор:  Евгений Темиргалеев [ Пятница, 17 Апрель, 2015 17:13 ]
Заголовок сообщения:  i21sysIn

Код:
   PROCEDURE Name* ( OUT name: ARRAY OF CHAR );
   BEGIN
      IF  done  THEN
         scanner.Scan;
         TextMappers.ScanQualIdent( scanner, name, Done )     <--- должна быть done вместо Done
      END;
      Done := done
   END Name;

Автор:  Евгений Темиргалеев [ Пятница, 24 Апрель, 2015 00:28 ]
Заголовок сообщения:  i21sysIn

Цитата:
VAR done-
Значение этой переменная показывает, была ли успешной последняя операция ввода из числа процедур, определенных в этом модуле. Значение done устанавливается в TRUE при успешном вызове Open или Restart, и устанавливается в FALSE первой неуспешной операции ввода. Однажды установленная в FALSE, она сохраняет это значение до следующего вызова Open или Restart.
NB Прямые обращения к методам сканера scanner не влияют на значение done. Поэтому для чтения потока ввода нужно либо использовать исключительно scanner, либо не использовать его вообще.

VAR scanner
Объект, выполняющий работу по сканированию потока ввода.
Подсоединяется к копии вводимого текста при выполнении процедуры Open (см. правила определения вводимого текста в описании процедуры Open).
Использовать scanner следует лишь в тех случаях, когда требуется детальный (посимвольный) анализ структуры вводимых данных, например, когда структура вводимых данных неизвестна или слишком сложна.
Если же структура вводимых данных известна и достаточно проста, то следует избегать обращений к scanner напрямую и по возможности использовать процедуры, определенные в данном модуле.
Приходится сталкиваться с ситуацией, когда структура вводимых данных проста и схема In.A(a); In.B(b); ...; ASSERT(In.done) устраивает, но местами требуются процедуры ввода данных специфического типа, которых в In нету. Эта проблема решалась бы дописыванием доп. процедур ввода, следующих логике In.done, если бы они имели возможность In.done менять (нужен полный экспорт вместо "на чтение").

Откуда возникают вопросы. Логично ли с т.з. расширямости такое радикальное установление? Имеются ли соображения другого плана, которые перевешивают в пользу In.done только на чтение?

Автор:  Info21 [ Пятница, 24 Апрель, 2015 21:56 ]
Заголовок сообщения:  Re: i21sysIn

Для специфических приложений нужно просто брать TextMappers.Scanner

i21sysIn -- i21sysIn -- это всего лишь одно такое приложение: уточнение старого модуля In.

Автор:  Евгений Темиргалеев [ Пятница, 24 Апрель, 2015 23:11 ]
Заголовок сообщения:  Re: i21sysIn

Таким общим ответом --- одно специфическое приложение естественным образом сосуществует со вторым, из него полученным, поскольку за стандартной библиотекой погони нет --- исходный специфический вопрос низводится до величины, которой можно пренебречь. И с первым, и со-вторым, не могу не согласиться. :)

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/