ISO 5234 says:
https://datatracker.ietf.org/doc/html/rfc5234#section-3.2
Elements separated by a forward slash ("/") are alternatives. Therefore,
foo / barwill accept <foo> or <bar>.
Using ISO 3339 for the ABNF definition for ISO 8601 datetime you have lines like
https://datatracker.ietf.org/doc/html/rfc3339#appendix-A
date-century = 2DIGIT date-decade = DIGIT ; 0-9 date-subdecade = DIGIT ; 0-9 date-year = date-decade date-subdecade dateopt-century = "-" / date-century datespec-year = date-century / dateopt-century date-year
If you assume alternatives imply match first, 2024 would only match on 20 and ignore the rest. If you assume alternatives imply match longest, 2024 would match in it's entirety.
Based on that, it seems almost safe to assume that alternatives are indeed match longest. Is that correct?
It's neither.
BNF and its variants specify context free grammars. Unlike parsing expression grammars, context free grammars do not have a concept of ordered choice. There's no priority between alternatives, you choose whichever one leads to a successful parse.
So let's say you have the following production:
If we went with a "match first" strategy, the input "ABBD" would not be accepted because
foowould only match "A" and the "BBD" left over could not be matched bybar. That's what would happen with a PEG, but for a CFG, "ABBD" is a word in the language defined by the above grammar.If we went with a "match longest" strategy, the input "ABD" would not be accepted because
foowould match "AB", leaving a single "D" that couldn't be matched bybar. But again, "ABD" is part of the language, so we can't use that strategy either.The rule for context free grammars is that a word is part of the language if there exists any sequence of derivations that would derive the word from the grammar and there's no restrictions on which alternatives you're allowed to pick to come up with such a sequence.