【问题标题】:Is there a metalanguage, similar to BNF that can concisely describe self-describing data?是否有一种类似于 BNF 的元语言可以简洁地描述自描述数据?
【发布时间】:2019-09-29 21:21:30
【问题描述】:

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

使用 BNF、EBNF 或 ABNF 来描述定义记录很容易......但是如何简洁地描述内容记录,其长度在定义记录中定义?

Here is an example 用类似 BNF 的表示法描述了经典的 NetCDF 数据格式,但并不简洁,因为 data recs 的长度在早期的 dim 中没有指定为数据的函数,并且var 定义。

【问题讨论】:

  • 是的,它被称为“自然语言”。缺点:也很模棱两可。

标签: data-structures bnf ebnf metalanguage abnf


【解决方案1】:

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

我是一个名为 XTRAN 的专家系统的创建者,它可以处理 30 多种计算机语言以及数据和文本。我厌倦了编写解析器,所以我创建了一个在解析时执行 EBNF 的解析引擎,并通过专家系统的规则语言向它提供 EBNF。由于 EBNF 本身是元,所以我用来解析和存储它以在解析时执行的模式是元元。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 2011-08-07
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 2011-07-24
    • 2011-08-29
    相关资源
    最近更新 更多