【问题标题】:Are there any modification of BNF with parametersBNF是否有参数修改
【发布时间】:2016-03-24 16:03:31
【问题描述】:

我的意思是像

LISTOF(EL) := "[" EL ("," EL)* "]"
LISTNUM := LISTOF(NUMBER)
LISTID := LISTOF(IDENT)

所以,有定义

NUMBER := ('0'-'9')*
IDENT := ('a'-'z'|'A'-'Z')*

我们有关注

[435,657,44]LISTNUM 的示例,

[dsf,thg,ewre]LISTID 的示例。

或者另一个例子(e表示空字符串)

A(0) := e 
A(n) := "a" A(n-1) | e

所以,A(5) 是由长度不超过 5 的 'a' 组成的所有字符串的集合

是否有任何科学著作描述了类似的东西?我们可以这样描述我们的语法并且仍然能够在可接受的时间内解析它吗?

【问题讨论】:

  • 你当然可以这样做。一种简单的方法是将参数化的 BNF 规则视为宏,然后将它们简单地扩展为传统的 BNF。问题是应该你这样做吗?额外的表现力在实践中能给你带来什么吗?我已经建立了很多语法;我不这么认为。 YMMV。

标签: parsing computer-science bnf ebnf


【解决方案1】:

常用的元语法如 Bnf、Abnf 和 Ebnf 没有参数化规则。但是,Iso Ebnf 可以按照标准进行扩展。如果我没记错的话,标准中其实是展示了一个引入参数的例子。

您可以免费获得标准的here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-22
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多