Существует ли метаязык, похожий на BNF, который может кратко описывать самоописываемые данные? - PullRequest
0 голосов
/ 13 мая 2019

Скажем, например, у меня был набор данных, который самоописал.Первые несколько хорошо структурированных записей определяют идентификаторы типов данных, которые включают имя и длину записей, за которыми следуют записи контента, которые начинаются с идентификаторов данных и содержат переменное количество данных, в зависимости от идентификатора.

Было бы достаточно легко описать записи определений с использованием BNF, EBNF или ABNF ... но как кратко описать записи контента, длина которых определена в записях определений?

Здесьпример описания классического формата данных NetCDF с BNF-подобной нотацией, но не кратко, потому что длины data recs не указываются как функция данных в более ранних dim и var определений.

1 Ответ

0 голосов
/ 13 мая 2019

Вы спрашиваете, как определить содержание записей контента? Вы дали понять, что они уже определены с точки зрения количества данных. Если каждый идентификатор типа данных подразумевает не только длину данных, но и структуру данных, это просто, даже в BNF, с одним набором производств для каждого идентификатора типа данных. Это то, что вы имели ввиду? (Это даже может быть LR (1).)

Я являюсь создателем экспертной системы под названием XTRAN, которая управляет более чем 30 компьютерными языками, а также данными и текстом. Я устал от написания синтаксических анализаторов, поэтому я создал механизм синтаксического анализа, который выполняет EBNF во время разбора, и я передаю его EBNF с помощью языка правил экспертной системы. Поскольку сам EBNF является мета, схема, которую я использую для разбора и сохранения его для выполнения во время разбора, является мета-мета.

Язык правил XTRAN также предоставляет возможность базы данных, в которой база данных находится в памяти, адресуется по контенту и хранится в виде разреженной матрицы. По сути, это n-пространство, каждая ячейка которого адресована списком индексов, причем каждый индекс либо удаляется, либо является целым числом, либо текстовой строкой. Поэтому я могу быстро построить сценарий, который вы описали, сохранив описания данных в той же базе данных, которая содержит записи контента. Это слабо аналогично реляционной базе данных, описывающей свою схему через собственное содержимое.

FWIW, мы называем метакод языка правил XTRAN, потому что это язык, который может манипулировать другими языками (так же как и собой).

...