Фрагмент информационного ресурса "Структура таблицы соответствий", позволяющий в конкретной таблице соответствий установить соответствие между вершиной орграфа метаинформации и порождающей грамматикой языка текстового представления соответствующего фрагмента информационного ресурса (орграфа информации).
Структура таблицы соответствий { ~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.
Левая часть каждого правила представляет собой ссылку на соответствующую вершину орграфа метаинформации, специфицирующего абстрактный синтаксис некоторого языка, а правая часть – последовательность элементов, каждый из которых относится к одному из следующих четырех типов.