ABNF 中的规则顺序重要吗?
Does the order of rules in ABNF matter?
Augmented Backus-Naur Form 中的规则顺序重要吗?
特别是
a = b
b = c
和
b = c
a = b
一样吗?
怎么样
a = b
a =/ c
和
a =/ c
a = b
?
是否可以使用 =/
的规则而不使用 =
的同名规则?
有点。虽然这对结果可能没有影响,但您应该始终以其依赖于自身的规则已经定义的方式来定义您的规则集。当您使用某些规则匹配元素时,规则的顺序当然会影响结果。
ABNF 不允许您在以后重新定义 规则集,因此它必须 始终相同。 (ABNF不是编程语言,规则不是变量)
a = b
b = c
上面的例子没有意义。在这个简短的例子中,这意味着什么是显而易见的,但在一个很长的 RFC 中,这些行可能被一堵文本分隔开。
b = c
a = b
Are those the same?
是的,规则不是变量 - 但我推荐第二个 notation/order
a = b
a =/ c
=/
定义了一个 增量 替代方案,或者在 RFC 中明确定义:
That is, an initial rule may match one or more alternatives, with later rule definitions adding to the set of alternatives.
在某些情况下这可能无关紧要,但不能假设总是如此。
在你的情况下,它与写作
相同
a = b / c
出于可读性(和逻辑)的原因,=/
不应出现在 =
之前。
Would it be possible to have a rule using =/ without a rule of the same name using =?
不是,不是。那么 a /= b
就是 a = b
。
Augmented Backus-Naur Form 中的规则顺序重要吗?
特别是
a = b
b = c
和
b = c
a = b
一样吗?
怎么样
a = b
a =/ c
和
a =/ c
a = b
?
是否可以使用 =/
的规则而不使用 =
的同名规则?
有点。虽然这对结果可能没有影响,但您应该始终以其依赖于自身的规则已经定义的方式来定义您的规则集。当您使用某些规则匹配元素时,规则的顺序当然会影响结果。
ABNF 不允许您在以后重新定义 规则集,因此它必须 始终相同。 (ABNF不是编程语言,规则不是变量)
a = b
b = c
上面的例子没有意义。在这个简短的例子中,这意味着什么是显而易见的,但在一个很长的 RFC 中,这些行可能被一堵文本分隔开。
b = c
a = b
Are those the same?
是的,规则不是变量 - 但我推荐第二个 notation/order
a = b
a =/ c
=/
定义了一个 增量 替代方案,或者在 RFC 中明确定义:
That is, an initial rule may match one or more alternatives, with later rule definitions adding to the set of alternatives.
在某些情况下这可能无关紧要,但不能假设总是如此。
在你的情况下,它与写作
相同a = b / c
出于可读性(和逻辑)的原因,=/
不应出现在 =
之前。
Would it be possible to have a rule using =/ without a rule of the same name using =?
不是,不是。那么 a /= b
就是 a = b
。