2017-08-24 79 views
1

我想了解TTML中timeExpressions的有效格式。 This section of the specification描述了語法。這裏是摘錄:在TTML timeExpression的W3C語法表示中,「+」是什麼意思?

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

該文檔說它使用Kleene運算符,並且在那個語法'+'中表示一個或多個。也許他們選擇了2個表示法來使得它更清楚,即需要前導零。 –

+1

啊,是的,謝謝。這是有道理的。如果你想把它放在答案中,我會接受它。 – Pocketsand

回答

3

的文檔指出:

的允許含量的O f使用Kleene運算符?,*和+將信息項目顯示爲語法片段。

而且在那個語法+的意思是一個或多個。

由於hours需要爲零填充零值< 10,或許這兩個定義是爲了說明這一點。

1

+表示可能存在一個或多個片段。區分2位數小時和3位或更多位數小時分量的原因是我相信暗示在一些時間基礎上,小時數只能是2位數,而在另外一些時間基準上它們可以更多。不管怎樣,最小位數是2.我同意只顯示<digit> <digit>+實際上意味着同樣的事情,但它不會帶有微妙的含義,即有時最大位數是2.

原因「2位或更多位」條目並不說<digit> <digit> | <digit> <digit> <digit>*是當兩位數存在時兩者不可區分。據我所知,這是一個很好的例子。