Да, я на это поведение ридера и полагался.

В принципе, если мы позволяем чтение за концом файла с постусловием eot, то мы должны соблюдать условие: попытка использования считанного (двух символов в нашем случае) охраняется охраной ~R.eot. В приведённом цикле это выполняется. Но... с этой точки зрения он громоздковат.

В принципе, можно рассмотреть это как линейный поиск конца комментария с подсчётом вложенности внутри.

## Код:
```
level := 1;
R.ReadChar(c1); R.ReadChar(c2);
WHILE ~eot & ~( (level = 0) & (c1 = "*") & (c2 = ")") ) DO
   IF (c1 = "(") & (c2 = "*") THEN
      INC(level);
   ELSIF (c1 = "*") & (c2 = ")") THEN
      DEC(level)
   END;
   c1 := c2;
   R.ReadChar(c2)
END
```
