I would suggest to rename "internal" to "partial" because it would be more accurate for dates such as:
> I'd like to think that the spec is stable,
I would suggest to reformulate:
> Year uncertain and month is both uncertain and approximate
and thus skip nested parentheses.
I also consider that the BNF description of internalUncertainOrApproximate
needs to be reworked. One of the most obvious reasons for that is that the
production for IUAYearMonthDay contains unmatched parentheses.
With the renaming described above, I would suggest for #201 the following BNF:
partialUncertainOrApproximate = p1 | p2 | p3 | p4 | p5 | p6
p1 = year UASymbol "-" month duas?
p2 = year UASymbol "-" monthDay
p3 = year UASymbol? muas duasd?
p4 = yearMonth UASymbol duasd
p5 = yearMonth duas
p6 = year "-(" monthDay ")" UASymbol
duas = "-(" day ")" UASymbol
duasd = duas | ( "-" day )
muas = "-(" month ")" UASymbol