Фрагмент информационного ресурса "Структура таблицы соответствий", позволяющий в конкретной таблице соответствий установить соответствие между вершиной орграфа метаинформации и порождающей грамматикой языка текстового представления соответствующего фрагмента информационного ресурса (орграфа информации).
Структура таблицы соответствий
{
~new орграф метаинформации
{
~one ~ref -> инфоресурс$; # Ссылка на корневую вершину орграфа грамматики (метаинформации), который расширяет описываемая таблица соответствий
}
~seq соответствие
{
~new вершина
{
~one ~ref -> инфоресурс$; # При формировании таблицы соответствий здесь должна быть ссылка на вершину орграфа метаинформации, которой требуется сопоставить
# порождающую грамматику языка текстового представления информации
}
~copymm ~new грамматика
{
~one ~ref -> Язык описания грамматик$; # При формировании таблицы соответствий здесь должна быть ссылка на корневую вершину орграфа информации, описывающего порождающую грамматику
# языка текстового представления информации
~copymm ~new ["структурный вид"] # Признак, определяющий, какое представление подграфа орграфа информации по умолчанию должно быть использовано при отображении содержимого его
# корневой вершины, вершине-прототипу которой (на нее сделана ссылка под понятием "вершина") сопоставлена порождающая грамматика: текстовое или
# структурное.
# Если должно использоваться структурное представление, то данная вершина должна быть порождена при формировании таблицы соответствий,
# в противном случае, порождать её не нужно (по умолчанию будет использоваться текстовое представление).
}
}
}
Язык описания (порождающих текстовых) грамматик позволяет специфицировать грамматики в РБНФ (расширенная Бэкуса-Наурова форма) подобной нотации, задавать контекстные условия, связанные с повторно используемыми лексемами, а также метасимволы форматирования текстов, используемые при их синтезе.
Язык описания грамматик
{
~new Правила
{
~seq Правило
{
~new Левая часть
{
~one ~ref -> инфоресурс$;
}
~new Правая часть
{
~seq Элемент
~ALT{
Элемент конкретного синтаксиса [str]
~new Вершина орграфа метаинформации
{
~one ~ref -> инфоресурс$;
~copymm ~new Разделитель повторяющихся элементов
{
~ref-new -> Платформа IACPaaS/Редакторы и просмотрщики/Язык описания грамматик$/Правила/Правило/Правая часть/Элемент/Элемент конкретного синтаксиса;
~copymm ~new ["Завершающий"] # Должен ли элемент конкретного синтаксиса стоять после последнего из повторяющихся элементов
}
}
~new Спецвершина
~ALT{
~new __DEF__ # Определяющее вхождение идентификатора
{
~one ~ref -> инфоресурс$; # При анализе текстового представления в процессе формирования орграфа информации новая вершина в орграфе в соответствии с
# правилом не создается. В качестве метки вершине, у которой вершиной-прототипом является, та, на которую в орграфе метаинформации
# сделана ссылка, нужно установить считанную из строки лексему.
# При синтезе текстового представления в строку помещается метка вершины, у которой вершиной-прототипом является, та, на
# которую в орграфе метаинформации сделана ссылка.
}
~new __REF__ # Использующее вхождение идентификатора
~ALT{
~one ~ref -> инфоресурс$; # При анализе текстового представления в процессе формирования орграфа информации необходимо выполнить поиск по
# вершине-прототипу (на которую в орграфе метаинформации сделана ссылка в данном правиле) в ближайшем определяющем вхождении
# вершины с заданной меткой (совпадающей с меткой считанной из строки лексемы) и сделать ссылку на нее.
# При синтезе текстового представления в строку помещается метка вершины, у которой вершиной-прототипом является, та, на
# которую в орграфе метаинформации сделана ссылка.
~new Метапуть # При анализе текстового представления в процессе формирования орграфа информации необходимо выполнить поиск по пути в орграфе метаинформации
# вершины с данной меткой и сделать ссылку на нее. Путь представляет собой последовательность ссылок на вершины орграфа
# метаинформации, начиная с корневой.
# При синтезе текстового представления в строку помещается метка вершины, у которой вершиной-прототипом является, та, на которую в
# орграфе метаинформации сделана ссылка.
{
~set ~ref -> инфоресурс$;
}
}
~new __DEFREF__ # Определяющее и использующее вхождение идентификатора
~ALT{
~one ~ref -> инфоресурс$;
~new -> Платформа IACPaaS/Редакторы и просмотрщики/Язык описания грамматик$/Правила/Правило/Правая часть/Элемент/Спецвершина/__REF__/Метапуть;
}
}
~new Элемент форматирования
{
~one ~all HTML-тег
{
~listmm Атрибут
{
Имя [str]
~onemm Значение [str]
}
}
}
}
}
}
}
~new Лексические шаблоны
{
~new Строковая константа
{
Шаблон-регулярное выражение [str]
}
~new Целочисленная константа
{
-> Платформа IACPaaS/Редакторы и просмотрщики/Язык описания грамматик$/Лексические шаблоны/Строковая константа/Шаблон-регулярное выражение;
}
~new Вещественная константа
{
-> Платформа IACPaaS/Редакторы и просмотрщики/Язык описания грамматик$/Лексические шаблоны/Строковая константа/Шаблон-регулярное выражение;
}
~copymm ~new Идентификатор
{
-> Платформа IACPaaS/Редакторы и просмотрщики/Язык описания грамматик$/Лексические шаблоны/Строковая константа/Шаблон-регулярное выражение;
}
}
}
В форме орграфа спецификация языка описания порождающих текстовых грамматик выглядит следующим образом.

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