/*
* Parser rules
*/
+// unknownDisplayDate:
-oneDisplayDate: displayDate ( DOT | QUESTION )? EOF ;
+oneDisplayDate: displayDate ( DOT | QUESTION )? EOF ;
displayDate: uncertainDate
| certainDate
/* TODO: Need to decide what "before" and "after" actually mean
| beforeOrAfterDate
*/
+| beforeOrAfterDate
+// | unknownDate
;
uncertainDate: CIRCA certainDate ;
millennium: nth MILLENNIUM era? ;
-strDate: strMonth ( numDayOfMonth | nth ) COMMA? numYear era?;
+strDate: strMonth ( numDayOfMonth | nth ) COMMA? numYear era;
invStrDate: era num COMMA? strMonth num
-| era? num COMMA strMonth num ;
-dayFirstDate: num strMonth COMMA? num era
-| num strMonth COMMA num era?
-| nth strMonth COMMA? num era? ;
-dayOrYearFirstDate: num strMonth num ;
-invStrDateEraLastDate: num COMMA strMonth num era? ;
-strDayInMonthRange: strMonth numDayOfMonth ( HYPHEN | DASH ) numDayOfMonth COMMA? numYear era? ;
-monthInYearRange: strMonth ( HYPHEN | DASH ) strMonth COMMA? numYear era? ;
-nthQuarterInYearRange: nthQuarter ( HYPHEN | DASH ) nthQuarter COMMA? numYear era? ;
-strSeasonInYearRange: strSeason ( HYPHEN | DASH ) strSeason COMMA? numYear era? ;
-numDayInMonthRange: numMonth SLASH numDayOfMonth ( HYPHEN | DASH ) numDayOfMonth SLASH numYear era? ;
-numDate: num SLASH num SLASH num era?
-| num HYPHEN num HYPHEN num era? ;
-monthYear: strMonth COMMA? numYear era? ;
-invMonthYear: era? numYear COMMA? strMonth ;
-seasonYear: strSeason COMMA? numYear era? ;
-invSeasonYear: era? numYear COMMA? strSeason ;
-nthQuarterYear: nthQuarter numYear era? ;
+| ( num | nth ) strMonth COMMA? num era ;
+strDayInMonthRange: strMonth numDayOfMonth ( HYPHEN | DASH ) numDayOfMonth COMMA? numYear era ;
+monthInYearRange: strMonth ( HYPHEN | DASH ) strMonth COMMA? numYear era ;
+nthQuarterInYearRange: nthQuarter ( HYPHEN | DASH ) nthQuarter COMMA? numYear era ;
+strSeasonInYearRange: strSeason ( HYPHEN | DASH ) strSeason COMMA? numYear era ;
+numDayInMonthRange: numMonth SLASH numDayOfMonth ( HYPHEN | DASH ) numDayOfMonth SLASH numYear era
+| numMonth SLASH numYear ( HYPHEN | DASH ) numMonth SLASH numYear era ;
+numDate: num SLASH num SLASH num era
+| num HYPHEN num HYPHEN num era ;
+monthYear: strMonth COMMA? numYear era ;
+invMonthYear: era numYear COMMA? strMonth ;
+seasonYear: strSeason COMMA? numYear era ;
+invSeasonYear: era numYear COMMA? strSeason ;
+nthQuarterYear: nthQuarter numYear era ;
nthQuarter: ( nth | LAST ) QUARTER ;
nthHalf: ( nth | LAST ) HALF ;
numDecade: TENS ;
numMonth: NUMBER ;
numDayOfMonth: NUMBER ;
num: NUMBER ;
-
+// unknownDate: UNKNOWN ;
/*
* Lexer rules
QUESTION: '?' ;
STRING: [a-z]+ ;
OTHER: . ;
+// UNKNOWN: 'unknown';
\ No newline at end of file
"13 april 15": # oneDisplayDate - ambigous day and year - should be Year month day
earliestSingleDate: [13, 4, 15, CE]
+ "13 april 1995": # oneDisplayDate - with question mark
+ earliestSingleDate: [1995, 4, 13, CE]
+
+ "13 apr 1995": # oneDisplayDate - with question mark
+ earliestSingleDate: [1995, 4, 13, CE]
+
+ "13th APRIL 1995": # oneDisplayDate - with question mark
+ earliestSingleDate: [1995, 4, 13, CE]
+
+ "13 april 1995 - 13 april 2018":
+ earliestSingleDate: [1995, 4, 13, CE]
+ latestDate: [2018, 4, 13, CE]
+
+ "after 13 april 1995":
+ earliestSingleDate: [1995, 4, 13, CE]
+ latestDate: [2018, 10, 17, CE]
+
+ "after april 13 1995":
+ earliestSingleDate: [1995, 4, 13, CE]
+ latestDate: [2018, 10, 17, CE]
+
+ "unknown":
+ earliestSingleDate: []
+
# -------------------------------------------------------------------------------------------------------
# Invalid dates