Правила: Программа осуществляет проверку используя заданный набор правил. Правила задаются в файле Rules.txt. Для задания правил необходимо воспользоваться следующим шаблоном:
# T= T1, T2, ... [ TB= TB1, TB2, … ] [ TA= TA1, TA2, … ]
{
…
}
T - типы лексем, к которым будет применено правило. B - типы лексем перед лексемами T. TA - типы лексем после T. TB и TA являются необязательными аргументами, их можно не указывать, тогда правило будет применено при любых TB и TA. Описание правила начинается с символа “#”. В блоке { } задаются условия, которые необходимо соблюдать, для этого правила.
При указании типов лексем можно применять оператор "!" (отрицание), правило будет применено ко всем типам лексем кроме этого). При указании условий можно применять оператор "||" (или), правило будет успешно пройдено, если не нарушено хотя бы одно из условий.
Новые правила для одной и той же лексемы накладываются на ранее заданные.
Существующие условия:
| Условие | Описание |
|---|---|
| SpacesBefore= | Пробелы до |
| SpacesAfter= | Пробелы после |
| LinesBefore= | Пустые строки до |
| LinesAfter= | Пустые строки после |
| MaxLength= | Максимальная длина лексемы |
| FirstSymbolRegister= | Регистр первого символа (lower or upper) |
| CanBe_= | Допускается ли наличие нижнего подчеркивания в лексеме |
| Register= | Регистр лексемы (lower or upper) |
| BeginIs= | Начало лексемы |
| BeginIsNot= | Начало лексемы не |
Примеры:
Условие "пробел после" задается для оператора return, если за ним не стоит ;
# T= T_RETURN TA= !T_TERMINATOR
{
SpacesAfter=1
}
Условие "пробел до" или " пустая строка до" задаются для } при инициализации. При выполнении любого из условий правило будет соблюдено.
# T= T_INIT_LIST_CLOSE
{
SpacesBefore=1 || LinesBefore=1
}
Условие "конец строки до " и "конец строки после" задаются для { блоков, структур, конструкции switch-case и перечислений.
# T= T_BLOCK_OPEN_BRACE, T_STRUCT_OPEN_BRACE, T_SWITCH_OPEN_BLOCK, T_ENUM_OPEN_BRACE
{
LinesBefore=1
LinesAfter=1
}