Dynalist BNF grammar for date parsing

<dyn-date> ::= "!(" <date-part> " | " <rec-part> ")"
             | "!(" <date-part> ")"

<date-part> ::= <date>
              | <date> " " <time>
              | <date> " - " <date>
              | <date> " " <time> " - " <date> " " <time>

<rec-part> ::= "~" <rec>
             | <rec>

<rec> ::= <natural> "d"
        | <natural> "w" <week-days>
        | <natural> "m"
        | <natural> "y"

<week-days> ::= <one-throu-seven> <week-days>
              | ""

<one-throu-seven> ::= "1"
                    | "2"
                    | "3"
                    | "4"
                    | "5"
                    | "6"
                    | "7"

<date> ::= <digit> <digit> <digit> <digit> "-" <digit> <digit> "-" <digit> <digit>

<time> ::= <digit> <digit> ":" <digit> <digit>

<natural> ::= <digit> <natural>
            | <digit>

<digit> ::= "0"
          | "1"
          | "2"
          | "3"
          | "4"
          | "5"
          | "6"
          | "7"
          | "8"
          | "9"
Summary

This text will be hidden