## Код:
```
(* Вызывается когда "(" и "*" уже прочитано *)
level := 1;
(*
0   пропуск литер
1   считана ( ожидается *
2   считана * ожидается )
*)
state := 0;
WHILE ~R.eot & (level > 0) DO
   R.ReadChar(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 R.eot THEN
   Mark("комментарий не завершен")
ELSE
   R.ReadChar(ch)
END
```
Это решение с ошибкой. См:viewtopic.php?p=42367#p42367