BNF有没有带参数的修改
Are there any modification of BNF with parameters
我的意思是
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) 是所有由 'a' 组成且长度不超过 5
的字符串的集合
有没有科学著作描述类似的东西?我们能否以这种方式描述我们的语法并且仍然能够在可接受的时间内解析它?
Bnf、Abnf、Ebnf等常用元语法没有参数化规则。然而,根据标准,Iso Ebnf 是可扩展的。如果我没记错的话,标准里居然给出了引入参数的例子
您可以免费获得标准 here。
我的意思是
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) 是所有由 'a' 组成且长度不超过 5
的字符串的集合有没有科学著作描述类似的东西?我们能否以这种方式描述我们的语法并且仍然能够在可接受的时间内解析它?
Bnf、Abnf、Ebnf等常用元语法没有参数化规则。然而,根据标准,Iso Ebnf 是可扩展的。如果我没记错的话,标准里居然给出了引入参数的例子
您可以免费获得标准 here。