Формат нейтральных файлов
Нейтральный файл состоит из строк текста ASCII. Формат включает следующие элементы:
Строка, начинающаяся с символа #, является комментарием.
Строка, не начинающаяся с символа #, имеет форму:
уровень поле значение
где:
уровень — это целое число
поле — это имя
значение — это строка, которая может присутствовать
Поле может представлять собой:
имя простого типа данных (целое число, строка, вещественное число и т. д.);
имя массива;
имя структуры;
имя указателя на структуру.
Все поля на одном уровне принадлежат одному родительскому объекту.
Когда значение присутствует на определенном уровне и начинается с символа левой квадратной скобки ([) либо состоит из последовательности цифр, разделенных запятыми, это указывает, что поле является массивом размеров [n]([m] ...). Значения элементов массива содержатся в строках уровня+1 вплоть до следующей строки, начинающейся снова с уровня.
Для одномерных массивов только одна строка находится на более высоком уровне, значение которого представляет строку значений элементов, разделенных запятыми.
Нотация < n*m> указывает, что все следующие элементы <n> имеют значение <m>.
Если значение присутствует на определенном уровне (и не является строкой ->), это значение должно быть назначено полю.
Если значение отсутствует на определенном уровне, это указывает на то, что поле является структурой. Непосредственные элементы объединения содержатся в строках уровня+1 вплоть до следующей строки, начинающейся снова с уровня.
Строка, поле которой является строкой ugc_xar_len, является особым случаем, и указывает, что со следующей строки начинается описание массива значений длины.
Если значение является строкой ->, поле является указателем на объединение, элементы которого следуют.
Строка со специальным значением NULL указывает, что поле является указателем, значение которого null.