1 grammar StructuredDate;
4 * This is a grammar for ANTLR 4 (http://www.antlr.org/).
12 oneDisplayDate: displayDate ( DOT | QUESTION )? EOF ;
14 displayDate: uncertainDate
21 uncertainDate: CIRCA certainDate ;
23 certainDate: hyphenatedRange
27 beforeOrAfterDate: ( BEFORE | AFTER ) singleInterval ;
29 uncalibratedDate: numYear PLUSMINUS num YEARSSTRING? BP ;
31 hyphenatedRange: singleInterval ( HYPHEN | DASH ) singleInterval
39 singleInterval: yearSpanningWinter
55 quarterInYearRange: nthQuarterInYearRange
56 | strSeasonInYearRange
64 | invStrDateEraLastDate
72 yearSpanningWinter: WINTER COMMA? numYear SLASH numYear era? ;
74 partialYear: partOf numYear era? ;
76 quarterYear: seasonYear
81 halfYear: nthHalf numYear era? ;
85 partialDecade: partOf numDecade era? ;
87 decade: numDecade era? ;
89 partialCentury: partOf ( strCentury | numCentury ) era? ;
91 quarterCentury: nthQuarter ( strCentury | numCentury ) era? ;
93 halfCentury: nthHalf ( strCentury | numCentury ) era? ;
95 century: ( strCentury | numCentury ) era? ;
97 millennium: nth MILLENNIUM era? ;
99 romanDate: num (HYPHEN | SLASH) romanMonth (HYPHEN | SLASH) numYear era? ;
100 strDate: strMonth ( numDayOfMonth | nth ) COMMA? numYear era?;
101 invStrDate: era num COMMA? strMonth num
102 | era? num COMMA strMonth num ;
103 dayFirstDate: num strMonth COMMA? num era
104 | num strMonth COMMA num era?
105 | nth strMonth COMMA? num era? ;
106 dayOrYearFirstDate: num strMonth num ;
107 invStrDateEraLastDate: num COMMA strMonth num era? ;
108 strDayInMonthRange: strMonth numDayOfMonth ( HYPHEN | DASH ) numDayOfMonth COMMA? numYear era? ;
109 monthInYearRange: strMonth ( HYPHEN | DASH ) strMonth COMMA? numYear era? ;
110 nthQuarterInYearRange: nthQuarter ( HYPHEN | DASH ) nthQuarter COMMA? numYear era? ;
111 strSeasonInYearRange: strSeason ( HYPHEN | DASH ) strSeason COMMA? numYear era? ;
112 numDayInMonthRange: numMonth SLASH num ( HYPHEN | DASH ) num SLASH numYear era? ;
113 numDate: num SLASH num SLASH num era?
114 | num HYPHEN num HYPHEN num era? ;
115 monthYear: strMonth COMMA? numYear era? ;
116 invMonthYear: era? numYear COMMA? strMonth ;
117 seasonYear: strSeason COMMA? numYear era? ;
118 invSeasonYear: era? numYear COMMA? strSeason ;
119 nthQuarterYear: nthQuarter numYear era? ;
120 nthQuarter: ( nth | LAST ) QUARTER ;
121 nthHalf: ( nth | LAST ) HALF ;
123 strCentury: nth CENTURY ;
124 numCentury: HUNDREDS ;
125 nthCenturyRange: allOrPartOf nth ( HYPHEN | DASH ) allOrPartOf nth CENTURY era? ;
126 strSeason: SPRING | SUMMER | FALL | WINTER ;
127 allOrPartOf: partOf | ;
128 partOf: EARLY | MIDDLE | LATE ;
129 nth: NTHSTR | FIRST | SECOND | THIRD | FOURTH ;
130 strMonth: MONTH | SHORTMONTH DOT? ;
134 numDayOfMonth: NUMBER ;
136 unknownDate: UNKNOWN ;
137 romanMonth: ROMANMONTH ;
142 WS: [ \t\r\n]+ -> skip;
143 PLUSMINUS: '±' | '+/-' ;
144 CIRCA: ('c' | 'ca') DOT? | 'circa' ;
145 SPRING: 'spring' | 'spr' ;
146 SUMMER: 'summer' | 'sum' ;
147 WINTER: 'winter' | 'win' ;
148 FALL: 'fall' | 'autumn' | 'fal' | 'aut' ;
150 MIDDLE: 'middle' | 'mid' ( HYPHEN | DOT )?;
152 BEFORE: 'before' | 'pre' HYPHEN? ;
153 AFTER: 'after' | 'post' HYPHEN? ;
162 MILLENNIUM: 'millennium' ;
163 MONTH: 'january' | 'february' | 'march' | 'april' | 'may' | 'june' | 'july' | 'august' | 'september' | 'october' | 'november' | 'december' ;
164 SHORTMONTH: 'jan' | 'feb' | 'mar' | 'apr' | 'jun' | 'jul' | 'aug' | 'sep' | 'sept' | 'oct' | 'nov' | 'dec' ;
165 BC: 'bc' | 'bce' | 'b.c.' | 'b.c.e.' ;
166 AD: 'ad' | 'a.d.' | 'ce' | 'c.e.' ;
167 BP: 'bp' | 'b.p.' | 'b.p' ;
168 NTHSTR: [0-9]*? ([0456789] 'th' | '1st' | '2nd' | '3rd' | '11th' | '12th' | '13th') ;
169 HUNDREDS: [0-9]*? '00' '\''? 's';
170 TENS: [0-9]*? '0' '\''? 's';
171 NUMBER: ([0-9,]+)*[0-9] ;
172 ROMANMONTH: 'i' | 'ii' | 'iii' | 'iv' | 'v' | 'vi' | 'vii' | 'viii' | 'ix' | 'x' | 'xi' | 'xii' ;
175 DASH: [—–] ; /* EM DASH, EN DASH */
181 YEARSSTRING: 'years' | 'year' ;