Skip to content

VIl1aIn/validator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Описание.

Этот перловый скрипт предназначен для простой проверки синтаксиса
файла с конфигурацией модели. Файл моделей это шаблон m4, по которому
создаётся файл radsh, используемый при импорте в TBSM (IBM
продукт). Описание см. проект model-creator

https://github.com/VIl1aIn/model-creator

Скрипт просто проверяет по словарю и базовый синтаксис, не более.

   Сделано, ну или будет:
    Проверяем только:

    -   Орфографию слов по словарю

    -   Минимальную корректность синтаксиса

По результату проверки выдаст "OK" либо строку и слово, которое не
понравилось.

Вызов.

скрипт проверки файлов шаблонов на орфографию
вызов так:
  check-srv-syntax.pl [<имя mc файла> [<имя словаря>]]
    Файл словаря ищется в текущем каталоге. Если не задан, то используется
    имя dictionary.txt


Описание начинки.


   Функция *okOut*
    Форматированный вывод в случае отсутствия ошибок в проверяемом файле

   Функция *errOut*
    Форматированный вывод трех параметров из массива @result:

    -   Номер строки где есть ошибка

    -   Слово где есть ошибка

    -   Целиком ошибочная строка

   Функции *thinCheck*
    Выполняет "тонкую" проверку слов по алгоритму:

    Меняем символы в проверяемом слове на "@" по маске слова из словаря.
    Подсчитываем кол-во совпадений. Если совпадений нет или их меньше
    порога, считаем что это комментарий и ошибки нет. Иначе высока
    вероятность, что это ошибка в слове.

    Дополнительно проверяем длины слова и слова из словаря, чтобы исключить
    реакцию на создаваемые макросы типа: _template_AlertKey

   Функция *checkComment*
    Пропускает строки, не подлежащие проверке.

    Сейчас это:

    -   Комментарии "# Text", "dnl Comment".

    -   Пустые и незначимые строки

    -   Строки, начинающиеся макросами, созданными внутри документа. По
        внутреннему соглашению это строки начинающиеся с "__" (двух
        подчеркиваний).

   Функция *checkSyntax*
    Получает на вход строку из файла шаблона и выполняет такие шаги:

    -   Выделяет из строки первое и последнее слово по символам "(", ")",
        при этом дополнительно последнюю фразу делит на слова по символам "
        ". Требуется для проверки конструкции типа:

        dnl Здесь текст комментария

        MACROS(val1,val2,...,valN)dnl Тоже комментарии

    -   Прогоняет слова на соответсвие словам из словаря. Если соответствия
        не найдено, то использует процедуру тонкой проверки *thinCheck*

    Возвращает строку:

    -   "OK" если все нормально, ошибок нет

    -   Ошибочные слово(а) в формате "[первое слово:][последнее слово]"

   (c) VIl
   19.08.2016

About

Check model file from model-creator

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages