Что означает "+" в синтаксическом представлении W3C для выражения времени TTML?
Я хочу понять действительные форматы timeExpressions в TTML. Этот раздел спецификации описывает синтаксис. Вот выдержка:
<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>+
2 ответа
Документ утверждает, что:
Разрешенное содержимое информационного элемента отображается в виде фрагмента грамматики с использованием операторов Клини?, * И +.
И в этой грамматике +
означает один или более
Как hours
должен быть дополнен нулями для значений < 10, возможно, два определения предназначены для иллюстрации этого.
+ Означает, что может присутствовать один или несколько фрагментов. Я считаю, что причина, по которой мы делаем различие между компонентами, состоящими из двухзначных часов и трех- или болеезначных часов, состоит в том, что в некоторых случаях часы могут быть только двухзначными, тогда как в других они могут быть больше. В любом случае, минимальное количество цифр равно 2. Я согласен, что просто показывает <digit> <digit>+
будет означать то же самое, но не будет иметь тонкого смысла, что иногда максимальное количество цифр равно 2.
Причина, по которой запись "2 или более цифр" не говорит <digit> <digit> | <digit> <digit> <digit>*
является то, что эти два будут неразличимы, когда присутствуют 2 цифры. Насколько я могу судить, это приятный момент.