ABNF的规则顺序是否重要?

时间:2016-05-24 11:40:09

标签: parsing abnf

Augmented Backus-Naur Form中的规则顺序是否重要?

特别是

a = b
b = c

b = c
a = b

同样的?

怎么样?
a = b
a =/ c

a =/ c
a = b

是否可以使用=/使用=而不使用http://hbase_server.com:8080/table_name/key的同名规则?

1 个答案:

答案 0 :(得分:1)

有点儿。虽然它可能对结果没有任何影响,但您应该始终定义规则集,使其依赖于自身的规则已经定义。当您使用某些规则匹配元素时,规则的顺序当然会影响结果。

ABNF不允许您稍后重新定义规则集,因此必须始终相同。 (ABNF不是编程语言,规则不是变量)

a = b
b = c

上面的例子毫无意义。在这个简短的例子中,它显然意味着什么,但在漫长的RFC中,这些线可以用一面文字隔开。

b = c
a = b
  

那些是一样的吗?

是的,规则不是变量 - 但我建议使用第二种符号/顺序

a = b
a =/ c

=/定义增量替代方案,或者在RFC中明确定义:

  

也就是说,初始规则可能会匹配一个或多个替代方案,以及后续规则定义会添加到替代方案

有些情况可能并不重要,但不能假设它始终如此。

在您的情况下,它与写作

相同
a = b / c
出于可读性(和逻辑)的原因,

=/不应该出现在=之前。

  

是否可以使用= /而没有使用=?

的同名规则来使用规则

不是,不。 a /= b只会a = b