2017-08-24 2 views
1

Je veux comprendre les formats valides de timeExpressions en TTML. This section of the specification décrit la syntaxe. Voici un extrait:Que signifie "+" dans la représentation de la syntaxe W3C pour TTML timeExpression?

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

            -- ✂ -- 

I la nomenclature du document est familière dans une certaine mesure, par ex. Je comprends:

  • | moyens ou
  • ( ... ) groupes
  • ? signifie en option

mais qu'est-ce que cela signifie +?


Je suppose que cela signifie « un ou plusieurs » comme dans une expression régulière mais, si tel était le cas, pourquoi la spécification lire:

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

Au lieu de simplement:

hours 
    : <digit> <digit>+ 
+0

Ce doc dit qu'il utilise des opérateurs de Kleene et que la grammaire '+ 'signifie un ou plusieurs. Peut-être ont-ils choisi 2 représentations pour préciser que des zéros en tête sont requis. –

+1

Ahhh, oui, merci. Cela aurait du sens. Si vous voulez mettre cela dans une réponse, je l'accepterai. – Pocketsand

Répondre

3

Les Etats doc que:

Le contenu autorisé o f l'item d'information est représenté par un fragment de grammaire, en utilisant les opérateurs de Kleene?, * et +.

Et dans cette grammaire, + signifie un ou plusieurs.

Comme hours doit être rempli de zéro pour les valeurs < 10, peut-être que les deux définitions sont destinées à illustrer cela.

1

Le + signifie qu'un ou plusieurs des fragments peuvent être présents. La raison pour faire la distinction entre les heures à 2 chiffres et les composantes à 3 chiffres ou plus est que je pense que dans certaines bases de temps les heures peuvent être à 2 chiffres seulement, alors que dans d'autres elles peuvent être plus. Dans les deux cas cependant, le nombre minimum de chiffres est 2. Je suis d'accord que le simple fait de montrer <digit> <digit>+ signifierait effectivement la même chose mais cela n'aurait pas la connotation subtile que parfois le nombre maximum de chiffres est 2.

La raison l'entrée «2 chiffres ou plus» ne dit pas <digit> <digit> | <digit> <digit> <digit>* est que les deux seraient indiscernables lorsque 2 chiffres sont présents. C'est une finesse cependant, pour autant que je sache.