2017-08-24 2 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>+ 

            -- ✂ -- 

私はこの文書の命名法にある程度慣れています。私は理解:

  • |手段OR
  • ( ... )グループ
  • ?はオプション

を意味しますが+は何を意味するのでしょうか?

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

代わりに、単純で:


私はそれはそれは場合であれば、なぜ仕様は読んでいました、正規表現で行いますが通り、それは「一つ以上」を意味引き受けます

+0

このドキュメントでは、Kleene演算子を使用していると述べています。その文法では、「+」は1つ以上の意味を持ちます。多分、彼らは先行ゼロが必要であることを明確にするために2つの表現を選んだでしょう。 –

+1

ああ、はい、ありがとうございます。それは意味をなさないでしょう。それを答えに入れたいなら、私はそれを受け入れます。 – Pocketsand

答えて

3

hours 
    : <digit> <digit>+ 
ドキュメントのように述べている:

許可コンテンツO f情報項目は、Kleene演算子?、*および+を使用して文法フラグメントとして示されます。

そしてその文法では、+は1つ以上を意味します。

の場合、hoursには0を埋め込む必要がありますが、2つの定義はそれを示すためのものです。

1

+は、1つ以上のフラグメントが存在する可能性があることを意味します。 2桁の時間と3桁以上の時間の区別をつける理由は、いくつかのタイムベースでは2桁の数字しか使用できないのに対し、他の数字では時間が2桁になることがあると思います。どちらの場合でも、最小桁数は2です。私は<digit> <digit>+を表示するだけで効果的に同じことを意味することに同意しますが、最大桁数が2であることがあるという微妙な意味は含まれません。

理由「2桁以上」の項目には<digit> <digit> | <digit> <digit> <digit>*と表示されていません。2桁の数字が入力されている場合、2つの数字は区別できません。しかし、私が知る限り、これはきれいです。

関連する問題