Понятия и обозначения

I. При описании синтаксиса сообщения и его элементов используются следующие металингвистические конструкции:

::= - метасимвол, означающий "есть по определению";

<> - метасимволы, используемые для выделения элементов металингвистической структуры;

| - метасимвол, означающий возможность выбора среди нескольких вариантов значений элемента металингвистической структуры;

[] - метасимволы, означающие необязательность элемента металингвистической структуры;

{} - метасимволы, означающие использование металингвистической структуры один и более раз.

К числу синтаксических ограничений относятся также ряд дополнительных требований к непротиворечивости представленной в файле информации.

Например, при использовании метасимвола '|' для описания нескольких возможных вариантов структуры файла могут быть указаны условия, в случае выполнения которых правильным является единственный вариант. Эти условия называются условиями выбора и могут быть проверены на основе присутствующей в файле информации (без привлечения дополнительных источников).

В таких случаях используются обозначения:

<структура>::=<вариант1> | ?УсловиеВыбора <вариант2>

Если условие 'УсловиеВыбора' выполнено, то <структура> принимает значение <вариант1>, иначе - <вариант2>.

II. При описании синтаксиса сообщения используются следующие основные понятия.

<слово>::= <число> | <дата> | <текст> | <код >| специальное слово |

<пустое выражение>

<словосочетание>::= <слово1>, <слово1> | <слово1>, <словосочетание>

<слово1>::= <число> | <дата> | <текст0> | <текст1> | <текст2> | <код >

Текст (<текст>) представляет собой непустую последовательность символов, в качестве которых используются русские и латинские буквы, цифры, а также любые другие символы таблицы ASCII, за исключением символов "возврат каретки" и "перевод строки" (коды ASCII соответственно 13 и 10). Первый символ текста должен быть отличен от пробела. В том случае, когда текстовое значение встречается в составе словосочетания, возможны дополнительные ограничения на вид текста. Для выделения этих возможностей используются обозначения <текст0>, <текст1>, <текст2>.

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

Дата представляется в виде <день>.<месяц>.<год>, где <день> - две цифры, соответствующие номеру дня в месяце, <месяц> - две цифры, соответствующие номеру месяца в году, <год> - четыре цифры года.

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

<русская буква> - русская буква

<латинская буква> - латинская буква

<ц> - цифра

<пробел> - символ пробела

<запятая> - символ запятой: ','

<другой символ> - символ, имеющий код ASCII, отличный от 13 и 10, и не являющийся ни цифрой, ни буквой, ни пробелом, ни запятой

<пустое выражение> - выражение, не содержащее ни одного символа

<буква>::=<русская буква> | <латинская буква>

<символ>::=<буква> | <ц> | <пробел> | <запятая> | <другой символ>

<символ-не-пробел>::=<буква> | <ц> | <запятая> | <другой символ>

<символ0>::=<буква> | <ц> | <пробел> | <другой символ>

<символ-не-пробел0>::=<буква> | <ц> | <другой символ>

<текст>::=<символ-не-пробел> [ {<символ>} ]

<текст0>::= <символ-не-пробел0> [{<символ0>}]|

<пустое выражение>

<текст1>::=((<буква>|<ц>) [{<буква>|<ц>|<пробел>| -|/}])|

<пустое выражение>

<текст2>::= (<буква> [{<буква>|<пробел>| - }])|

<пустое выражение>

<число>::= [-]{<ц>}[.{<ц>}] | [-].{<ц>}

<дата>::=<день>.<месяц>.<год>

<год>::=<ц><ц><ц><ц>

<месяц>::=01|02|03|04|05|06|07|08|09|10|11|12

<день>::=<ц><ц>, принимает значения от 01 до 28, 29, 30 или 31 - в зависимости от значений <месяц> и <год>;

<часы>::=<ц><ц> - принимают значения от 00 до 23;

<минуты>::=<ц><ц> - принимают значения от 00 до 59;

<секунды>::=<ц><ц> - принимают значения от 00 до 59;

III. При описании синтаксиса сообщения используются следующие специальные виды слов, используемых в качестве значений реквизитов.

<специальное слово>::= <идентификатор файла> |

<идентификатор отправителя> |

<идентификатор документа> |

<ИНН> | <КПП> | <ИННФЛ> |

<ОГРН> | <ОГРНИП> |

<КИО>

<идентификатор файла>::= <идентификатор отправителя> <год> <месяц>

<день> <номер файла>

<номер файла>::= <6ц>

<идентификатор документа>::= < идентификатор файла>

<номер документа>

<номер документа>:= <6ц>

<идентификатор отправителя>::= <идентификатор ЮЛ> |

<идентификатор ИП> |

<идентификатор НО> |

<идентификатор банка>

<идентификатор ЮЛ>:: = <ИНН> <2*> <КПП>

<идентификатор ИП>:: = <ИННФЛ><9*>

<идентификатор НО>:: = <КодНО><17*>

<идентификатор банка>:: = <идентификатор ЮЛ>

<ИНН>::=<10ц>

<КПП>::=<9ц>

<ИННФЛ>::=<12ц>

<ОГРН>::=<13ц>

<ОГРНИП>::=< 15ц>

<КИО>::= <5ц>

<КодНО>::=<4ц>

<2*>, <9*>, <17*> и тому подобное - последовательности из соответствующего числа подряд идущих символов *, например <2*>::=**.

<4ц>, <8ц>, <9ц>, <10ц>, <12ц> и тому подобное - последовательности из соответствующего числа подряд идущих цифр (<ц>).