## Код:
```
ЧАСТЬ КомпиляторСканирование;

   ПОДКЛЮЧИТЬ
      литеры := КомпиляторЛитеры,
      символы := КомпиляторСимволы,
      Считывание := КомпиляторСчитывание,
      ...

   ТИПЫ
      Сканер* = ЗАПИСЬ
         считыватель: Считывание.Считыватель;
         литера: ЛИТЕРА16
      КОНЕЦ;

      Орфограмма* = ЗАПИСЬ
         символ*: ЦЕЛОЕ32;
         ...
      КОНЕЦ;

   ....

   ПРОЦЕДУРА пропустить_комментарий (ЧЗ с: Сканер);
      ПЕРЕМЕННЫЕ вложенность: ЦЕЛОЕ32;
   НАЧАЛО
      СТРАХОВКА(с.литера = литеры.звёздочка);
      вложенность := 1;
      считать_литеру(с);
      ПОВТОРЯТЬ
         ЕСЛИ с.литера = литеры.звёздочка ТОГДА
            считать_литеру(с);
            ЕСЛИ с.литера = литеры.правая_круглая_скобка ТОГДА
               УМЕНЬШИТЬ(вложенность); считать_литеру(с)
            КОНЕЦ
         АЕСЛИ с.литера = литеры.левая_круглая_скобка ТОГДА
            считать_литеру(с);
            ЕСЛИ с.литера = литеры.звёздочка ТОГДА
               УВЕЛИЧИТЬ(вложенность); считать_литеру(с)
            КОНЕЦ
         ИНАЧЕ
            считать_литеру(с)
         КОНЕЦ
      ПРЕКРАТИТЬ (вложенность = 0) ИЛИ (с.литера = литеры.ноль);
      ЕСЛИ с.литера = литеры.ноль ТОГДА
         ошибка("незавершёный комментарий");
         ОСТАНОВ(1)
      КОНЕЦ
   КОНЕЦ пропустить_комментарий;

   ...

   ПРОЦЕДУРА Сканировать (ЧЗ с: Сканер; З ф: Орфограмма);
   НАЧАЛО
      пропустить_пробелы(с);
      ЕСЛИ литеры.это_буква(с.литера) ТОГДА
         считать_слово(с, ф)
      АЕСЛИ литеры.это_цифра(с.литера) ТОГДА
         считать_число(с, ф)
      АЕСЛИ с.литера = литеры.левая_круглая_скобка ТОГДА
         считать_литеру(с);
         ЕСЛИ с.литера # литеры.звёздочка ТОГДА
            ф.символ := символы.левая_круглая_скобка
         ИНАЧЕ
            пропустить_комментарий(с);
            Сканировать(с, ф)
         КОНЕЦ
      АЕСЛИ с.литера = ...
```

У моего сканера конец текста сигнализируется нулевой литерой: сканер.литера = литеры.ноль