0

增强巴库斯-瑙尔形式中的规则顺序是否重要?

特别是,是

a = b
b = c

b = c
a = b

相同?

关于什么

a = b
a =/ c

a =/ c
a = b

?

是否可以有一个规则 using=/而不使用同名规则 using =

4

1 回答 1

1

有点儿。虽然它可能对结果没有影响,但您应该始终以已经定义了它所依赖的规则的方式定义您的规则集。当您将元素与某些规则匹配时,规则的顺序当然会影响结果。

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

a = b
b = c

上面的例子没有任何意义。在这个简短的例子中,这应该是什么意思很明显,但在一个长的 RFC 中,这些行可能被一堵文本隔开。

b = c
a = b

那些是一样的吗?

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

a = b
a =/ c

=/定义了一个增量替代方案,或者在 RFC 中具体定义:

也就是说,初始规则可以匹配一个或多个备选方案,随后的规则定义添加到备选方案集

在某些情况下它可能无关紧要,但不能假设总是如此。

在您的情况下,这与写作相同

a = b / c

=/=出于可读性(和逻辑)的原因,不应该出现在前面。

是否可以有一个使用 =/ 的规则而没有使用 = 的同名规则?

不是真的,不。a /= b那时就简单a = b了。

于 2016-05-24T12:00:07.677 回答