增强巴库斯-瑙尔形式中的规则顺序是否重要?
特别是,是
a = b
b = c
和
b = c
a = b
相同?
关于什么
a = b
a =/ c
和
a =/ c
a = b
?
是否可以有一个规则 using=/
而不使用同名规则 using =
?
增强巴库斯-瑙尔形式中的规则顺序是否重要?
特别是,是
a = b
b = c
和
b = c
a = b
相同?
关于什么
a = b
a =/ c
和
a =/ c
a = b
?
是否可以有一个规则 using=/
而不使用同名规则 using =
?
有点儿。虽然它可能对结果没有影响,但您应该始终以已经定义了它所依赖的规则的方式定义您的规则集。当您将元素与某些规则匹配时,规则的顺序当然会影响结果。
ABNF 不允许您稍后重新定义规则集,因此它必须始终相同。(ABNF 不是编程语言,规则不是变量)
a = b
b = c
上面的例子没有任何意义。在这个简短的例子中,这应该是什么意思很明显,但在一个长的 RFC 中,这些行可能被一堵文本隔开。
b = c
a = b
那些是一样的吗?
是的,规则不是变量 - 但我建议使用第二种表示法/顺序
a = b
a =/ c
=/
定义了一个增量替代方案,或者在 RFC 中具体定义:
也就是说,初始规则可以匹配一个或多个备选方案,随后的规则定义添加到备选方案集。
在某些情况下它可能无关紧要,但不能假设总是如此。
在您的情况下,这与写作相同
a = b / c
=/
=
出于可读性(和逻辑)的原因,不应该出现在前面。
是否可以有一个使用 =/ 的规则而没有使用 = 的同名规则?
不是真的,不。a /= b
那时就简单a = b
了。