1

我想了解 TTML 中 timeExpressions 的有效格式。 规范的这一部分描述了语法。这是一个摘录:

<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>+

                                    -- ✂ --

我对文档的命名在一定程度上是熟悉的,例如我理解:

  • |表示或
  • (...)团体
  • ?表示可选

但这是什么+意思?


我会假设它意味着“一个或多个”,就像它在正则表达式中所做的那样,但是,如果是这样的话,为什么规范会这样写:

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

而不是简单地:

hours
  : <digit> <digit>+
4

2 回答 2

3

该文档指出:

信息项的允许内容显示为语法片段,使用 Kleene 运算符 ?、* 和 +。

在那个语法+中确实意味着一个或多个。

由于hours值 < 10 需要补零,也许这两个定义旨在说明这一点。

于 2017-08-24T12:01:22.057 回答
1

+ 表示可能存在一个或多个片段。区分 2 位数小时和 3 位数或更多位数小时分量的原因是我相信暗示在某些时基中小时数只能是 2 位数,而在其他时基中可能更多。不过,无论哪种情况,最小位数都是 2。我同意仅显示<digit> <digit>+实际上意味着同一件事,但它不会带有有时最大位数为 2 的微妙含义。

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

于 2017-08-30T10:55:04.490 回答