【问题标题】:Tips for writing good EBNF grammars编写好的 EBNF 语法的技巧
【发布时间】:2011-09-22 06:44:43
【问题描述】:

我正在编写一些用于文档解析的扩展 Backus–Naur 形式语法。这些定义的语法有很多优秀的指南,但关于如何设计和构建它们的在线指南却很少。

任何人都可以推荐一些好的文章(或一般提示),说明你喜欢如何编写这些文章,因为即使最终的解析树可以等效,确实似乎是一种风格元素。 p>

例如比如:

  • 决定是否应显式标记换行符,还是仅将其视为空格?
  • 非终结符的命名方案
  • 在长定义中处理可选空格
  • 什么时候使用错误的语法检查而不是让那些不匹配

谢谢,

【问题讨论】:

    标签: coding-style context-free-grammar ebnf


    【解决方案1】:

    您应该朝着最舒服的方向工作 - 自下而上、自上而下或“三明治”(两者都做一点,在中间的某个地方相遇)。
    任何可以派生并具有其自身含义的“组”都应该从它自己的非终结符开始。例如,我会为所有与换行符相关的空格使用一个非终结符,一个用于所有其他空格,一个用于所有空格(基本上是前两个空格的并集)。

    语法中的命名约定通常是非终结符是大写字母或以大写字母开头,而终结符以非大写字母开头(但这当然取决于您设计的语言)。

    关于错误的语法检查,我不熟悉这个概念。我对 EBNF 的了解是,您只需编写您的语言接受的所有内容,仅此而已。

    一般来说,只需查看来自不同网站的一些不同语言的 EBNF,感受一下它们的外观,然后做你认为合适的事情。

    【讨论】:

      猜你喜欢
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 2011-03-08
      • 2016-01-04
      相关资源
      最近更新 更多