Если текст заканчивается комментарием, виден вывод 0X. Реальный сканер в Comment выставляет ошибку разбора, от которого пляшет внешняя процедура.
## Код:
```
MODULE Comment_test;

   IMPORT
      In := i21sysIn, Log;

   PROCEDURE Get (OUT ch: CHAR);
   BEGIN
      In.Char(ch); IF ~In.done THEN ch := 0X END
   END Get;

   PROCEDURE Eot (): BOOLEAN;
   BEGIN
      RETURN ~In.done
   END Eot;

   PROCEDURE Echo (ch: CHAR);
   BEGIN
      IF ch = 0DX THEN Log.Ln
      ELSIF ch = 09X THEN Log.Tab
      ELSE Log.Char(ch)
      END
   END Echo;

   PROCEDURE Test*;
      VAR   ch: CHAR;

      PROCEDURE Comment;
         VAR   level, state: INTEGER;
      BEGIN
         level := 1; state := 0;
         WHILE ~Eot() & (level > 0) DO
            Get(ch);
            CASE state OF
            | 0:   IF ch = "(" THEN state := 1 ELSIF ch = "*" THEN state := 2 (* ELSE state := 0 *) END
            | 1:   IF ch = "*" THEN INC(level) END; state := 0
            | 2:   IF ch = ")" THEN DEC(level) END; state := 0
            END
         END;
         IF Eot() THEN
            Log.String("комментарий не завершен"); Log.Ln
         ELSE
            Get(ch)
         END
      END Comment;

   BEGIN   (* Test *)
      In.Open;
      Get(ch);
      WHILE ~Eot() DO
         IF ch = "(" THEN
            Get(ch);
            IF ch = "*" THEN Comment ELSE Echo("(") END
         END;
         Echo(ch);
         Get(ch)
      END
   END Test;

END Comment_test.
```
