/* * Abbreviated version of the yacc grammar used by at(1). */ %token DOTTEDDATE %token HYPHENDATE %token HOURMIN %token INT1DIGIT %token INT2DIGIT %token INT4DIGIT %token INT5_8DIGIT %token INT %token NOW %token AM PM %token NOON MIDNIGHT TEATIME %token SUN MON TUE WED THU FRI SAT %token TODAY TOMORROW %token NEXT %token MINUTE HOUR DAY WEEK MONTH YEAR %token JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC %token UTC %type concatenated_date %type hr24clock_hr_min %type int1_2digit %type int2_or_4digit %type integer %type inc_dec_period %type inc_dec_number %type day_of_week %start timespec %% timespec : spec_base | spec_base inc_or_dec ; spec_base : date | time | time date | NOW ; time : time_base | time_base timezone_name ; time_base : hr24clock_hr_min | time_hour am_pm | time_hour_min | time_hour_min am_pm | NOON | MIDNIGHT | TEATIME ; hr24clock_hr_min: INT4DIGIT ; time_hour : int1_2digit ; time_hour_min : HOURMIN ; am_pm : AM | PM ; timezone_name : UTC ; date : month_name day_number | month_name day_number year_number | month_name day_number ',' year_number | day_of_week | TODAY | TOMORROW | HYPHENDATE | DOTTEDDATE | day_number month_name | day_number month_name year_number | month_number '/' day_number '/' year_number | concatenated_date | NEXT inc_dec_period | NEXT day_of_week ; concatenated_date: INT5_8DIGIT ; month_name : JAN | FEB | MAR | APR | MAY | JUN | JUL | AUG | SEP | OCT | NOV | DEC ; month_number : int1_2digit ; day_number : int1_2digit ; year_number : int2_or_4digit ; day_of_week : SUN | MON | TUE | WED | THU | FRI | SAT ; inc_or_dec : increment | decrement ; increment : '+' inc_dec_number inc_dec_period ; decrement : '-' inc_dec_number inc_dec_period ; inc_dec_number : integer ; inc_dec_period : MINUTE | HOUR | DAY | WEEK | MONTH | YEAR ; int1_2digit : INT1DIGIT | INT2DIGIT ; int2_or_4digit : INT2DIGIT | INT4DIGIT ; integer : INT | INT1DIGIT | INT2DIGIT | INT4DIGIT | INT5_8DIGIT ; %%