是否有类似于BNF的元语言可以简洁地描述自描述数据?

时间:2019-05-12 21:03:02

标签: data-structures bnf ebnf metalanguage abnf

例如,我有一个自我描述的数据集。前几个结构良好的记录定义了数据类型ID,其中包括记录的名称和长度,其后是内容记录,内容记录以数据ID开头,并根据ID包含可变数量的数据。

使用BNF,EBNF或ABNF来描述定义记录很容易,但是如何简洁地描述在定义记录中定义了内容记录的内容记录呢?

Here is an example用类似BNF的符号描述经典的NetCDF数据格式,但并不简洁,因为data recs的长度未指定为数据的函数。较早的dimvar定义。

1 个答案:

答案 0 :(得分:0)

您是否在问如何定义内容记录的内容?您已经清楚地说明了它们已经按照数据量进行了定义。如果每个数据类型ID不仅意味着数据长度,而且还意味着数据结构,那么即使在BNF中,每个数据类型ID都有一组生产量也很简单。你是这个意思吗? (甚至可能是LR(1)。)

我是一个名为XTRAN的专家系统的创建者,该系统处理30多种计算机语言以及数据和文本。我已经厌倦了编写解析器,因此创建了一个解析引擎,该引擎在解析时执行EBNF,然后通过专家系统的规则语言将其提供给EBNF。由于EBNF本身是元数据,因此我用来解析并存储以在解析时执行的架构是元元数据。

XTRAN的规则语言还提供了数据库功能,其中数据库是内存中,内容可寻址的并且存储为稀疏矩阵。它实际上是一个n空间,每个单元格都通过一个下标列表进行寻址,每个下标都被省略,一个整数或一个文本字符串。因此,我可以通过将数据描述存储在包含内容记录的同一数据库中来快速构建您描述的场景。它大致类似于通过自己的内容描述其架构的关系数据库。

FWIW,我们称其为XTRAN的规则语言元代码,因为它是一种可以操纵其他语言(以及自身)的语言。