- From: Philip Jägenstedt <philipj@opera.com>
- Date: Wed, 06 Jul 2011 10:39:12 +0200
- To: public-media-fragment@w3.org
On Wed, 06 Jul 2011 08:17:30 +0200, Chris Double
<chris.double@double.co.nz> wrote:
> Parts of the definition of NPT temporal fragments in the spec looks like:
>
> npttimedef = [ deftimeformat ":"] ( npttime [ "," npttime ] ) / (
> "," npttime )
> npt-sec = 1*DIGIT [ "." *DIGIT ]
> npt-mmss = npt-mm ":" npt-ss [ "." *DIGIT]
> npttime = npt-sec / npt-mmss / npt-hhmmss
>
> Because the 'npt-sec' clause is the first item in the alternates
> amongst 'npttime', given a temporal fragment of '#t=20:10', I see that
> 'npt-sec' will successfully match, but 'npttimedef' will fail since a
> ':' instead of a ',' follows the first number. Is it expected that
> this will then backtrack to retry the 'npt-mmss' clause? I'm
> unfamiliar with how ABNF definitions in these specs tend to work and
> whether backtracking is the norm. If not, then 'npt-mmss' would never
> match? Should the alternate clauses be re-ordered to work around this
> or is this level of detail not usually worried about in these types of
> specs since the intent is obvious?
I'm no ABNF master myself, but npttime here means that any of npt-sec,
npt-mmss or npt-hhmmss can match, so yes, if you think about the parser as
having a pointer into a string that you move forward, then you should
backtrack if npt-sec does not match.
One point I'm not quite sure about is if the order in the syntax is
relevant, but as long as the npt-{sec,mmss,hhmmss} productions are
mutually exclusive that should not matter.
As for intent, I certainly don't think anything should be left up to
interpretation, regardless of what is the norm :)
--
Philip Jägenstedt
Core Developer
Opera Software
Received on Wednesday, 6 July 2011 08:39:42 UTC