“+”在 TTML timeExpression 的 W3C 语法表示中意味着什么?

What does '+' mean in W3C syntax representation for TTML timeExpression?

我想了解 TTML 中 timeExpressions 的有效格式。 This section of the specification 描述语法。这是摘录:

<timeExpression>
  : clock-time
  | offset-time

clock-time
  : hours ":" minutes ":" seconds ( fraction | ":" frames ( "." sub-frames )? )?

offset-time
  : time-count fraction? metric

hours
  : <digit> <digit>
  | <digit> <digit> <digit>+

                                    -- ✂ --

我对文档的命名在某种程度上很熟悉,例如我明白了:

但是 + 是什么意思?


我假设它的意思是 'one or more',就像它在正则表达式中所做的那样,但是,如果是这样的话,为什么规范会这样写:

hours
  : <digit> <digit>
  | <digit> <digit> <digit>+

而不是简单地:

hours
  : <digit> <digit>+

文档指出:

The allowed content of the information item is shown as a grammar fragment, using the Kleene operators ?, * and +.

在该语法中 + 确实表示一个或多个。

由于 hours 需要对 < 10 的值进行零填充,也许这两个定义旨在说明这一点。

+ 表示可能存在一个或多个片段。区分 2 位数字小时和 3 位或更多数字小时组件的原因是我认为暗示在某些时基中,小时数只能是 2 位数字,而在其他时基中它们可以更多。在任何一种情况下,最小位数都是 2。我同意仅显示 <digit> <digit>+ 将有效地表示相同的意思,但它不会带有有时最大位数为 2 的微妙含义。

“2 位或更多数字”条目没有说明 <digit> <digit> | <digit> <digit> <digit>* 的原因是当出现 2 位数字时,两者将无法区分。据我所知,这是一个很好的选择。