--- /dev/null
+Terminals unused in grammar
+
+ FLOATNUMBER
+ STRING
+ EOL
+ EQUALS
+ CHARACTER
+ COLON
+ COMMA
+ SEMICOLON
+ MINUS
+ TIMESEPERATOR
+ TRUE
+ FALSE
+ FREQ
+ BYDAY
+ BYHOUR
+ BYMINUTE
+ BYMONTH
+ BYMONTHDAY
+ BYSECOND
+ BYSETPOS
+ BYWEEKNO
+ BYYEARDAY
+ DAILY
+ MINUTELY
+ MONTHLY
+ SECONDLY
+ WEEKLY
+ HOURLY
+ YEARLY
+ INTERVAL
+ COUNT
+ UNTIL
+ WKST
+ MO
+ SA
+ SU
+ TU
+ WE
+ TH
+ FR
+ BIT8
+ ACCEPTED
+ ADD
+ AUDIO
+ BASE64
+ BINARY
+ BOOLEAN
+ BUSY
+ BUSYTENTATIVE
+ BUSYUNAVAILABLE
+ CALADDRESS
+ CANCEL
+ CANCELLED
+ CHAIR
+ CHILD
+ COMPLETED
+ CONFIDENTIAL
+ CONFIRMED
+ COUNTER
+ DATE
+ DATETIME
+ DECLINECOUNTER
+ DECLINED
+ DELEGATED
+ DISPLAY
+ DRAFT
+ DURATION
+ EMAIL
+ END
+ FINAL
+ FLOAT
+ FREE
+ GREGORIAN
+ GROUP
+ INDIVIDUAL
+ INPROCESS
+ INTEGER
+ NEEDSACTION
+ NONPARTICIPANT
+ OPAQUE
+ OPTPARTICIPANT
+ PARENT
+ PERIOD
+ PRIVATE
+ PROCEDURE
+ PUBLIC
+ PUBLISH
+ RECUR
+ REFRESH
+ REPLY
+ REQPARTICIPANT
+ REQUEST
+ RESOURCE
+ ROOM
+ SIBLING
+ START
+ TENTATIVE
+ TEXT
+ THISANDFUTURE
+ THISANDPRIOR
+ TIME
+ TRANSPAENT
+ UNKNOWN
+ UTCOFFSET
+ XNAME
+ ALTREP
+ CN
+ CUTYPE
+ DAYLIGHT
+ DIR
+ ENCODING
+ EVENT
+ FBTYPE
+ FMTTYPE
+ LANGUAGE
+ MEMBER
+ PARTSTAT
+ RANGE
+ RELATED
+ RELTYPE
+ ROLE
+ RSVP
+ SENTBY
+ STANDARD
+ URI
+ CHARSET
+
+
+Grammar
+
+ 0 $accept: value $end
+
+ 1 value: date_value
+ 2 | datetime_value
+ 3 | duration_value
+ 4 | period_value
+ 5 | utcoffset_value
+ 6 | error
+
+ 7 date_value: DIGITS
+
+ 8 utc_char: %empty
+ 9 | UTC_CHAR
+
+ 10 utc_char_b: %empty
+ 11 | UTC_CHAR
+
+ 12 datetime_value: DIGITS TIME_CHAR DIGITS utc_char
+
+ 13 dur_date: dur_day
+ 14 | dur_day dur_time
+
+ 15 dur_week: DIGITS 'W'
+
+ 16 dur_time: TIME_CHAR dur_hour
+ 17 | TIME_CHAR dur_minute
+ 18 | TIME_CHAR dur_second
+
+ 19 dur_hour: DIGITS 'H'
+ 20 | DIGITS 'H' dur_minute
+
+ 21 dur_minute: DIGITS 'M'
+ 22 | DIGITS 'M' dur_second
+
+ 23 dur_second: DIGITS 'S'
+
+ 24 dur_day: DIGITS 'D'
+
+ 25 dur_prefix: %empty
+ 26 | '+'
+ 27 | '-'
+
+ 28 duration_value: dur_prefix 'P' dur_date
+ 29 | dur_prefix 'P' dur_time
+ 30 | dur_prefix 'P' dur_week
+
+ 31 period_value: DIGITS TIME_CHAR DIGITS utc_char '/' DIGITS TIME_CHAR DIGITS utc_char_b
+ 32 | DIGITS TIME_CHAR DIGITS utc_char '/' duration_value
+
+ 33 plusminus: '+'
+ 34 | '-'
+
+ 35 utcoffset_value: plusminus INTNUMBER INTNUMBER
+ 36 | plusminus INTNUMBER INTNUMBER INTNUMBER
+
+
+Terminals, with rules where they appear
+
+$end (0) 0
+'+' (43) 26 33
+'-' (45) 27 34
+'/' (47) 31 32
+'D' (68) 24
+'H' (72) 19 20
+'M' (77) 21 22
+'P' (80) 28 29 30
+'S' (83) 23
+'W' (87) 15
+error (256) 6
+DIGITS (258) 7 12 15 19 20 21 22 23 24 31 32
+INTNUMBER (259) 35 36
+FLOATNUMBER (260)
+STRING (261)
+EOL (262)
+EQUALS (263)
+CHARACTER (264)
+COLON (265)
+COMMA (266)
+SEMICOLON (267)
+MINUS (268)
+TIMESEPERATOR (269)
+TRUE (270)
+FALSE (271)
+FREQ (272)
+BYDAY (273)
+BYHOUR (274)
+BYMINUTE (275)
+BYMONTH (276)
+BYMONTHDAY (277)
+BYSECOND (278)
+BYSETPOS (279)
+BYWEEKNO (280)
+BYYEARDAY (281)
+DAILY (282)
+MINUTELY (283)
+MONTHLY (284)
+SECONDLY (285)
+WEEKLY (286)
+HOURLY (287)
+YEARLY (288)
+INTERVAL (289)
+COUNT (290)
+UNTIL (291)
+WKST (292)
+MO (293)
+SA (294)
+SU (295)
+TU (296)
+WE (297)
+TH (298)
+FR (299)
+BIT8 (300)
+ACCEPTED (301)
+ADD (302)
+AUDIO (303)
+BASE64 (304)
+BINARY (305)
+BOOLEAN (306)
+BUSY (307)
+BUSYTENTATIVE (308)
+BUSYUNAVAILABLE (309)
+CALADDRESS (310)
+CANCEL (311)
+CANCELLED (312)
+CHAIR (313)
+CHILD (314)
+COMPLETED (315)
+CONFIDENTIAL (316)
+CONFIRMED (317)
+COUNTER (318)
+DATE (319)
+DATETIME (320)
+DECLINECOUNTER (321)
+DECLINED (322)
+DELEGATED (323)
+DISPLAY (324)
+DRAFT (325)
+DURATION (326)
+EMAIL (327)
+END (328)
+FINAL (329)
+FLOAT (330)
+FREE (331)
+GREGORIAN (332)
+GROUP (333)
+INDIVIDUAL (334)
+INPROCESS (335)
+INTEGER (336)
+NEEDSACTION (337)
+NONPARTICIPANT (338)
+OPAQUE (339)
+OPTPARTICIPANT (340)
+PARENT (341)
+PERIOD (342)
+PRIVATE (343)
+PROCEDURE (344)
+PUBLIC (345)
+PUBLISH (346)
+RECUR (347)
+REFRESH (348)
+REPLY (349)
+REQPARTICIPANT (350)
+REQUEST (351)
+RESOURCE (352)
+ROOM (353)
+SIBLING (354)
+START (355)
+TENTATIVE (356)
+TEXT (357)
+THISANDFUTURE (358)
+THISANDPRIOR (359)
+TIME (360)
+TRANSPAENT (361)
+UNKNOWN (362)
+UTCOFFSET (363)
+XNAME (364)
+ALTREP (365)
+CN (366)
+CUTYPE (367)
+DAYLIGHT (368)
+DIR (369)
+ENCODING (370)
+EVENT (371)
+FBTYPE (372)
+FMTTYPE (373)
+LANGUAGE (374)
+MEMBER (375)
+PARTSTAT (376)
+RANGE (377)
+RELATED (378)
+RELTYPE (379)
+ROLE (380)
+RSVP (381)
+SENTBY (382)
+STANDARD (383)
+URI (384)
+CHARSET (385)
+TIME_CHAR (386) 12 16 17 18 31 32
+UTC_CHAR (387) 9 11
+
+
+Nonterminals, with rules where they appear
+
+$accept (142)
+ on left: 0
+value (143)
+ on left: 1 2 3 4 5 6, on right: 0
+date_value (144)
+ on left: 7, on right: 1
+utc_char (145)
+ on left: 8 9, on right: 12 31 32
+utc_char_b (146)
+ on left: 10 11, on right: 31
+datetime_value (147)
+ on left: 12, on right: 2
+dur_date (148)
+ on left: 13 14, on right: 28
+dur_week (149)
+ on left: 15, on right: 30
+dur_time (150)
+ on left: 16 17 18, on right: 14 29
+dur_hour (151)
+ on left: 19 20, on right: 16
+dur_minute (152)
+ on left: 21 22, on right: 17 20
+dur_second (153)
+ on left: 23, on right: 18 22
+dur_day (154)
+ on left: 24, on right: 13 14
+dur_prefix (155)
+ on left: 25 26 27, on right: 28 29 30
+duration_value (156)
+ on left: 28 29 30, on right: 3 32
+period_value (157)
+ on left: 31 32, on right: 4
+plusminus (158)
+ on left: 33 34, on right: 35 36
+utcoffset_value (159)
+ on left: 35 36, on right: 5
+
+
+State 0
+
+ 0 $accept: . value $end
+
+ error shift, and go to state 1
+ DIGITS shift, and go to state 2
+ '+' shift, and go to state 3
+ '-' shift, and go to state 4
+
+ 'P' reduce using rule 25 (dur_prefix)
+
+ value go to state 5
+ date_value go to state 6
+ datetime_value go to state 7
+ dur_prefix go to state 8
+ duration_value go to state 9
+ period_value go to state 10
+ plusminus go to state 11
+ utcoffset_value go to state 12
+
+
+State 1
+
+ 6 value: error .
+
+ $default reduce using rule 6 (value)
+
+
+State 2
+
+ 7 date_value: DIGITS .
+ 12 datetime_value: DIGITS . TIME_CHAR DIGITS utc_char
+ 31 period_value: DIGITS . TIME_CHAR DIGITS utc_char '/' DIGITS TIME_CHAR DIGITS utc_char_b
+ 32 | DIGITS . TIME_CHAR DIGITS utc_char '/' duration_value
+
+ TIME_CHAR shift, and go to state 13
+
+ $default reduce using rule 7 (date_value)
+
+
+State 3
+
+ 26 dur_prefix: '+' .
+ 33 plusminus: '+' .
+
+ INTNUMBER reduce using rule 33 (plusminus)
+ $default reduce using rule 26 (dur_prefix)
+
+
+State 4
+
+ 27 dur_prefix: '-' .
+ 34 plusminus: '-' .
+
+ INTNUMBER reduce using rule 34 (plusminus)
+ $default reduce using rule 27 (dur_prefix)
+
+
+State 5
+
+ 0 $accept: value . $end
+
+ $end shift, and go to state 14
+
+
+State 6
+
+ 1 value: date_value .
+
+ $default reduce using rule 1 (value)
+
+
+State 7
+
+ 2 value: datetime_value .
+
+ $default reduce using rule 2 (value)
+
+
+State 8
+
+ 28 duration_value: dur_prefix . 'P' dur_date
+ 29 | dur_prefix . 'P' dur_time
+ 30 | dur_prefix . 'P' dur_week
+
+ 'P' shift, and go to state 15
+
+
+State 9
+
+ 3 value: duration_value .
+
+ $default reduce using rule 3 (value)
+
+
+State 10
+
+ 4 value: period_value .
+
+ $default reduce using rule 4 (value)
+
+
+State 11
+
+ 35 utcoffset_value: plusminus . INTNUMBER INTNUMBER
+ 36 | plusminus . INTNUMBER INTNUMBER INTNUMBER
+
+ INTNUMBER shift, and go to state 16
+
+
+State 12
+
+ 5 value: utcoffset_value .
+
+ $default reduce using rule 5 (value)
+
+
+State 13
+
+ 12 datetime_value: DIGITS TIME_CHAR . DIGITS utc_char
+ 31 period_value: DIGITS TIME_CHAR . DIGITS utc_char '/' DIGITS TIME_CHAR DIGITS utc_char_b
+ 32 | DIGITS TIME_CHAR . DIGITS utc_char '/' duration_value
+
+ DIGITS shift, and go to state 17
+
+
+State 14
+
+ 0 $accept: value $end .
+
+ $default accept
+
+
+State 15
+
+ 28 duration_value: dur_prefix 'P' . dur_date
+ 29 | dur_prefix 'P' . dur_time
+ 30 | dur_prefix 'P' . dur_week
+
+ DIGITS shift, and go to state 18
+ TIME_CHAR shift, and go to state 19
+
+ dur_date go to state 20
+ dur_week go to state 21
+ dur_time go to state 22
+ dur_day go to state 23
+
+
+State 16
+
+ 35 utcoffset_value: plusminus INTNUMBER . INTNUMBER
+ 36 | plusminus INTNUMBER . INTNUMBER INTNUMBER
+
+ INTNUMBER shift, and go to state 24
+
+
+State 17
+
+ 12 datetime_value: DIGITS TIME_CHAR DIGITS . utc_char
+ 31 period_value: DIGITS TIME_CHAR DIGITS . utc_char '/' DIGITS TIME_CHAR DIGITS utc_char_b
+ 32 | DIGITS TIME_CHAR DIGITS . utc_char '/' duration_value
+
+ UTC_CHAR shift, and go to state 25
+
+ $default reduce using rule 8 (utc_char)
+
+ utc_char go to state 26
+
+
+State 18
+
+ 15 dur_week: DIGITS . 'W'
+ 24 dur_day: DIGITS . 'D'
+
+ 'W' shift, and go to state 27
+ 'D' shift, and go to state 28
+
+
+State 19
+
+ 16 dur_time: TIME_CHAR . dur_hour
+ 17 | TIME_CHAR . dur_minute
+ 18 | TIME_CHAR . dur_second
+
+ DIGITS shift, and go to state 29
+
+ dur_hour go to state 30
+ dur_minute go to state 31
+ dur_second go to state 32
+
+
+State 20
+
+ 28 duration_value: dur_prefix 'P' dur_date .
+
+ $default reduce using rule 28 (duration_value)
+
+
+State 21
+
+ 30 duration_value: dur_prefix 'P' dur_week .
+
+ $default reduce using rule 30 (duration_value)
+
+
+State 22
+
+ 29 duration_value: dur_prefix 'P' dur_time .
+
+ $default reduce using rule 29 (duration_value)
+
+
+State 23
+
+ 13 dur_date: dur_day .
+ 14 | dur_day . dur_time
+
+ TIME_CHAR shift, and go to state 19
+
+ $default reduce using rule 13 (dur_date)
+
+ dur_time go to state 33
+
+
+State 24
+
+ 35 utcoffset_value: plusminus INTNUMBER INTNUMBER .
+ 36 | plusminus INTNUMBER INTNUMBER . INTNUMBER
+
+ INTNUMBER shift, and go to state 34
+
+ $default reduce using rule 35 (utcoffset_value)
+
+
+State 25
+
+ 9 utc_char: UTC_CHAR .
+
+ $default reduce using rule 9 (utc_char)
+
+
+State 26
+
+ 12 datetime_value: DIGITS TIME_CHAR DIGITS utc_char .
+ 31 period_value: DIGITS TIME_CHAR DIGITS utc_char . '/' DIGITS TIME_CHAR DIGITS utc_char_b
+ 32 | DIGITS TIME_CHAR DIGITS utc_char . '/' duration_value
+
+ '/' shift, and go to state 35
+
+ $default reduce using rule 12 (datetime_value)
+
+
+State 27
+
+ 15 dur_week: DIGITS 'W' .
+
+ $default reduce using rule 15 (dur_week)
+
+
+State 28
+
+ 24 dur_day: DIGITS 'D' .
+
+ $default reduce using rule 24 (dur_day)
+
+
+State 29
+
+ 19 dur_hour: DIGITS . 'H'
+ 20 | DIGITS . 'H' dur_minute
+ 21 dur_minute: DIGITS . 'M'
+ 22 | DIGITS . 'M' dur_second
+ 23 dur_second: DIGITS . 'S'
+
+ 'H' shift, and go to state 36
+ 'M' shift, and go to state 37
+ 'S' shift, and go to state 38
+
+
+State 30
+
+ 16 dur_time: TIME_CHAR dur_hour .
+
+ $default reduce using rule 16 (dur_time)
+
+
+State 31
+
+ 17 dur_time: TIME_CHAR dur_minute .
+
+ $default reduce using rule 17 (dur_time)
+
+
+State 32
+
+ 18 dur_time: TIME_CHAR dur_second .
+
+ $default reduce using rule 18 (dur_time)
+
+
+State 33
+
+ 14 dur_date: dur_day dur_time .
+
+ $default reduce using rule 14 (dur_date)
+
+
+State 34
+
+ 36 utcoffset_value: plusminus INTNUMBER INTNUMBER INTNUMBER .
+
+ $default reduce using rule 36 (utcoffset_value)
+
+
+State 35
+
+ 31 period_value: DIGITS TIME_CHAR DIGITS utc_char '/' . DIGITS TIME_CHAR DIGITS utc_char_b
+ 32 | DIGITS TIME_CHAR DIGITS utc_char '/' . duration_value
+
+ DIGITS shift, and go to state 39
+ '+' shift, and go to state 40
+ '-' shift, and go to state 41
+
+ $default reduce using rule 25 (dur_prefix)
+
+ dur_prefix go to state 8
+ duration_value go to state 42
+
+
+State 36
+
+ 19 dur_hour: DIGITS 'H' .
+ 20 | DIGITS 'H' . dur_minute
+
+ DIGITS shift, and go to state 43
+
+ $default reduce using rule 19 (dur_hour)
+
+ dur_minute go to state 44
+
+
+State 37
+
+ 21 dur_minute: DIGITS 'M' .
+ 22 | DIGITS 'M' . dur_second
+
+ DIGITS shift, and go to state 45
+
+ $default reduce using rule 21 (dur_minute)
+
+ dur_second go to state 46
+
+
+State 38
+
+ 23 dur_second: DIGITS 'S' .
+
+ $default reduce using rule 23 (dur_second)
+
+
+State 39
+
+ 31 period_value: DIGITS TIME_CHAR DIGITS utc_char '/' DIGITS . TIME_CHAR DIGITS utc_char_b
+
+ TIME_CHAR shift, and go to state 47
+
+
+State 40
+
+ 26 dur_prefix: '+' .
+
+ $default reduce using rule 26 (dur_prefix)
+
+
+State 41
+
+ 27 dur_prefix: '-' .
+
+ $default reduce using rule 27 (dur_prefix)
+
+
+State 42
+
+ 32 period_value: DIGITS TIME_CHAR DIGITS utc_char '/' duration_value .
+
+ $default reduce using rule 32 (period_value)
+
+
+State 43
+
+ 21 dur_minute: DIGITS . 'M'
+ 22 | DIGITS . 'M' dur_second
+
+ 'M' shift, and go to state 37
+
+
+State 44
+
+ 20 dur_hour: DIGITS 'H' dur_minute .
+
+ $default reduce using rule 20 (dur_hour)
+
+
+State 45
+
+ 23 dur_second: DIGITS . 'S'
+
+ 'S' shift, and go to state 38
+
+
+State 46
+
+ 22 dur_minute: DIGITS 'M' dur_second .
+
+ $default reduce using rule 22 (dur_minute)
+
+
+State 47
+
+ 31 period_value: DIGITS TIME_CHAR DIGITS utc_char '/' DIGITS TIME_CHAR . DIGITS utc_char_b
+
+ DIGITS shift, and go to state 48
+
+
+State 48
+
+ 31 period_value: DIGITS TIME_CHAR DIGITS utc_char '/' DIGITS TIME_CHAR DIGITS . utc_char_b
+
+ UTC_CHAR shift, and go to state 49
+
+ $default reduce using rule 10 (utc_char_b)
+
+ utc_char_b go to state 50
+
+
+State 49
+
+ 11 utc_char_b: UTC_CHAR .
+
+ $default reduce using rule 11 (utc_char_b)
+
+
+State 50
+
+ 31 period_value: DIGITS TIME_CHAR DIGITS utc_char '/' DIGITS TIME_CHAR DIGITS utc_char_b .
+
+ $default reduce using rule 31 (period_value)