gpt4 book ai didi

parsing - 什么是最终的 EBNF 语法?

转载 作者:行者123 更新时间:2023-12-02 16:49:13 25 4
gpt4 key购买 nike

我目前正在使用 lark parser for python尝试阅读一些问题规范。我对扩展 Backus-Naur 形式的“正确”语法感到困惑,尤其是 LHS 和 RHS 是如何分开的。 wikipedia page使用等号 = 符号,lark 只需要一个冒号;见lark cheat sheet .其他来源使用 ::= 分隔符 - 例如atom ebnf package .

有确定的答案吗? official ISO spec似乎暗示“定义符号”应该是 = 但规范中似乎有回旋余地。那么为什么会有所有不同的版本呢?

最佳答案

由于世界尚未任命语法形式主义高级专员,因此没有确定的句法。您当然可以自由使用 ISO“扩展 BNF”标准,特别是如果您正在编写其他一些 ISO 标准,但不要期望它由解析器生成器实现,即使是扩展普通 BNF 的生成器。 (BNF 也没有明确的标准。)

我无从得知 ISO 标准的作者们在想什么,但我怀疑他们的期望是现实的:它旨在允许对标准文档的语法进行精确描述,但有许多功能不适合自动实现(包括在形式主义不够普遍时使用的用英语编写规则限制的方法)。通常可以从 ISO 标准中自动提取(大部分)语法,但这项任务既不简单也不——据我所知——旨在简单,因为大多数 ISO 标准不是作为纯文本文档分发的从 PDF 或 HTML 格式中提取格式化文本本身就存​​在挑战。

您提供的标点符号选项是最常见的选项,尽管数学家经常使用 ⇒ 来分隔左右两边来编写 BNF。 (不幸的是,大多数键盘都缺少这个有用的字符。)

我个人不喜欢 ::= 分隔符,尽管它被各种解析器生成器使用。在我看来,对于一个简单的标点符号来说,打字太多了,而且很难与标记为 | 的替代品保持一致。但对每个人来说。

关于parsing - 什么是最终的 EBNF 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59391207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com