Текстовое представление фрагментов информационных ресурсов

Фрагмент информационного ресурса "Структура таблицы соответствий", позволяющий в конкретной таблице соответствий установить соответствие между вершиной орграфа метаинформации и порождающей грамматикой языка текстового представления соответствующего фрагмента информационного ресурса (орграфа информации).

Структура таблицы соответствий
{
    ~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/Редакторы и просмотрщики/Язык описания грамматик$/Лексические шаблоны/Строковая константа/Шаблон-регулярное выражение;
        }
    }
}

В форме орграфа спецификация языка описания порождающих текстовых грамматик выглядит следующим образом.

1

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

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