次の問題の解決策を見つけたいのですが、時間の EBNF を年-月-日と月-日-年の 2 つの形式で記述して違いを確認する必要があります。
通常の順序 (02-10-1954) ではなく、年、月、日 (1954-02-10) の形式で構造化整数として日付を記述する利点を 1 つ特定してください。
形式: 年月日。これが私が思いついたものです:
<NonZeroDigit> ::= ("1" | "2" | ... | "9")
<Month> ::= ( "0" <NonZeroDigit> ) | ( "1" ( "0" | "1" | "2" ) )
<Day> ::= ( "0" <NonZeroDigit> ) | ( ("1" | "2") <NonZeroDigit> ) | ("3" ( "0" | "1" ) )
<Year> ::= ( "000" <NonZeroDigit> ) |
( "00" <NonZeroDigit> <NonZeroDigit> ) |
( "0" <NonZeroDigit> <NonZeroDigit> <NonZeroDigit> ) |
( "1" <NonZeroDigit> <NonZeroDigit> <NonZeroDigit>) |
( "20" <NonZeroDigit> <NonZeroDigit> ) )
年は 2099 年になり、これらのルールは機能すると思いますが、当時の EBNF を記述するより良い方法はありますか? 私は何かが恋しいですか?