                       Верификатор help-файлов
                   интегрированной среды Multi-Edit


                           Немировский В.Б.

              Томск, ТПИ, кафедра прикладной математики



    При разработке больших программных систем на основе  интегрирован-
ной среды Multi-Edit возникает необходимость написания большого  коли-
чества help-файлов  для  различных  компонентов  программной  системы.
В процессе написания и отладки таких файлов возникают задачи верифика-
ции гипертекста, просмотра help-файла, не включенного в систему ссылок
подсистемы помощи, и ряд других задач.
    Ниже предлагается  описание  макрофайла, включающего некоторый ин-
струментарий для работы с help-файлами. Идея разработки такого инстру-
ментария принадлежит С.В. Гурину, предложившему использовать верифика-
тор  help-файлов  как  элемент  интегрированной  среды Multi-Edit  при 
разработке  больших  программных  систем ( в  этой  связи  см.  работу 
С.В. Гурин " Использование  Multi-Edit  как  интегрированной среды при 
создании  различных программных систем").
    Макрофайл VFHLP состоит из шести макросов:
      - CHECK - макрос верификации help-файла;
      - LISTCHP - вспомогательный макрос создания списка разделов;  
      - VIEW - макрос визуализации гипертекста;                     
      - IND_LIST - макрос создания индексного списка в конце        
                   help-файла;                                      
      - HLPCMPERROR - макрос обработки ошибок;
      - K_QSRT - макрос Е.Г.Корзуна, реализующий
                 алгоритм быстрой сортировки. Используется
                 практически без изменений.

    Верификатор обрабатывает  только файлы  с расширением  .HLP. После
анализа и исправления обнаруженных ошибок можно использовать индексный
компилятор для получения HLX-файла.
    Верификация заключается в анализе:
      - правильности использования операторов гипертекста  (метасимво-
        лов, зарезервированных в подсистеме  помощи  для   специальных
        целей);
      - правильности разрешения ссылок;
      - правильности расстановки атрибутов.

    Верифицируемый help-файл должен быть загружен в текущее окно.  При
запуске верификатора макрос CHECK реализует следующий алгоритм  поиска
и анализа ошибок:
      - создаются два  скрытых окна для  записи выделяемых разделов  и
        индексов, и окно для записи сообщений об ошибках;
      - производится последовательный поиск разделов и индексов в тек-
        сте верифицируемого файла, и запись их в соответствующие окна;
        попутно проверяется правильность использования  метасимволов и
        расстановки атрибутов;
      - после выделения всех разделов и индексов производится проверка
        правильности разрешения ссылок; при этом, если ссылка указыва-
        ет на другой help-файл (индекс включает имя файла), то  произ-
        водится поиск файла и, в случае успеха, его загрузка во  вновь
        созданное окно,  в котором  и ищется  нужный раздел  или связь
        (выделенная строка в разделе); после завершения поиска создан-
        ное окно уничтожается;
      - по окончании работы верификатора происходит запись файла с со-
        общениями об  ошибках, уничтожаются  скрытые окна,  вызывается
        макрос обработки ошибок.

    При верификации help-файла  ошибочными считаются следующие  ситуа-
ции:
      - неудвоенный метасимвол (оператор гипертекста), если  конструк-
        ция, содержащая его, не может быть идентифицирована как разре-
        шенная в гипертексте (индекс, раздел, имя глобальной  перемен-
        ной и др.);
      - имя файла в индексе с явно указанным расширением, т.к. система
        гипертекста контролирует дату создания HLP- и HLX-файлов и об-
        ращается к более позднему (если есть оба);
      - отсутствие файла, на который есть ссылка (при этом ищется файл
        с расширением .HLP);
      - отсутствие искомого раздела в файле;
      - отсутствие искомой строки (связи);
      - при указании изменения атрибута отсутствие отмены этого  изме-
        нения в той же строке.

    Все сообщения об ошибках выдаются в форме предупреждений с  указа-
нием строки в верифицируемом файле. Далее дело разработчика,  квалифи-
цировать ситуацию  как ошибочную  или ничего  не исправлять (например,
оставить изменение атрибута в одной строке, а отмену изменения  неско-
лькими строками ниже.

    Вспомогательный  макрос  LISTCHP  используется  макросами  VIEW  и
IND_LIST. Создает окно со списком разделов help-файла.  Возвращает но-
мер окна в системной переменной return_int.

    Макрос визуализации гипертекста VIEW используется в файловой  обо-
лочке DOS_SHELL С.В. Гурина ( см. описание файловой оболочки  GSVDS  в
этом же выпуске).  Создает  бокс  со  списком  разделов  выделенного в
DOS_SHELL файла с расширением .HLP, позволяет  многократно  выбирать и
просматривать выбранный из бокса раздел help-файла. Может быть включен
в меню вьюеров файловой оболочки GSVDS для просмотра HLP-файлов.

    Макрос IND_LIST  создает  раздел INDEX со списком индексов в конце 
help-файла. Если такой раздел есть в help-файле, то переход на него  в
окне подсистемы помощи происходит при  нажатии  клавиши F3.  Индексный
список используется для ускорения доступа к нужному разделу или  связи
help-файла.

    Макрос обработки ошибок HLPCMPERROR работает в режиме поиска  сле-
дующей ошибки. Он должен быть назначен на клавишу <CtrlE> в пункте Key
mapping  меню  INSTALLATION  AND  SETUP. Макрос анализирует расширение
файла, загруженного в окно.  Если загружен не HLP-файл,  то происходит
обращение  к  стандартному  макросу  LANGUAGE^CMPERROR.  Альтернативой
предложенной возможности является назначение макроса обработки  ошибок
на какую-то другую клавишу. В этом случае макрос нужно слегка  модифи-
цировать, оставив в нем только часть, ответственную за обработку  оши-
бок для  HLP-файлов. Другая  альтернатива  изложена  С.В. Гуриным (см.
GSV_LANGUIGE.HLP в этом же выпуске).
