Grammar

This grammar is LALR(1)

Number of Rules 19

Number of Terminals 9

Number of Lr0 States13

Number of La States0

BNF

Accept ::= sqlTimestamp

sqlTimestamp ::= yyyy '-' MM '-' dd ' ' HH ':' mm ':' ss Z

sqlTimestamp ::= yyyy '-' MM '-' dd ' ' HH ':' mm ':' ss

yyyy ::= year4

MM ::= month

dd ::= dayInMonth

HH ::= hour23

mm ::= minute

ss ::= second

Z ::= rfc822

10: month ::= digit12

11: dayInMonth ::= digit12

12: hour23 ::= digit12

13: minute ::= digit12

14: second ::= digit12

15: rfc822 ::= rfc822String1

16: rfc822 ::= rfc822String2

17: rfc822 ::= rfc822String3

18: rfc822 ::= rfc822String4

Terminals

rfc822String4 = '[\+\-][0-9]{2}[0-9]{2}'

rfc822String2 = 'GMT[\+\-][0-9]{2}[0-9]{2}'

rfc822String1 = 'GMT[\+\-][0-9]{2}:[0-9]{2}'

rfc822String3 = '[\+\-][0-9]{2}:[0-9]{2}'

digit12 = '[0-9]{1,2}'

year4 = '[0-9]{4}'

States

State 1

( )

Accept->.sqlTimestamp

year4 Sh/Rd 3

sqlTimestamp Goto 2

yyyy Goto 3

State 2

( 1 )

Accept->sqlTimestamp . (0)

Accept->sqlTimestamp . (0)

Eof Reduce 0

State 3

( 1 )

sqlTimestamp->yyyy .'-' MM '-' dd ' ' HH ':' mm ':' ss Z

sqlTimestamp->yyyy .'-' MM '-' dd ' ' HH ':' mm ':' ss

'-' Shift 4

State 4

( 3 )

sqlTimestamp->yyyy '-' .MM '-' dd ' ' HH ':' mm ':' ss Z

sqlTimestamp->yyyy '-' .MM '-' dd ' ' HH ':' mm ':' ss

digit12 Sh/Rd 10

MM Goto 5

month Gt/Rd 4

State 5

( 4 )

sqlTimestamp->yyyy '-' MM .'-' dd ' ' HH ':' mm ':' ss Z

sqlTimestamp->yyyy '-' MM .'-' dd ' ' HH ':' mm ':' ss

'-' Shift 6

State 6

( 5 )

sqlTimestamp->yyyy '-' MM '-' .dd ' ' HH ':' mm ':' ss Z

sqlTimestamp->yyyy '-' MM '-' .dd ' ' HH ':' mm ':' ss

digit12 Sh/Rd 11

dd Goto 7

dayInMonth Gt/Rd 5

State 7

( 6 )

sqlTimestamp->yyyy '-' MM '-' dd .' ' HH ':' mm ':' ss Z

sqlTimestamp->yyyy '-' MM '-' dd .' ' HH ':' mm ':' ss

' ' Shift 8

State 8

( 7 )

sqlTimestamp->yyyy '-' MM '-' dd ' ' .HH ':' mm ':' ss Z

sqlTimestamp->yyyy '-' MM '-' dd ' ' .HH ':' mm ':' ss

digit12 Sh/Rd 12

HH Goto 9

hour23 Gt/Rd 6

State 9

( 8 )

sqlTimestamp->yyyy '-' MM '-' dd ' ' HH .':' mm ':' ss Z

sqlTimestamp->yyyy '-' MM '-' dd ' ' HH .':' mm ':' ss

':' Shift 10

State 10

( 9 )

sqlTimestamp->yyyy '-' MM '-' dd ' ' HH ':' .mm ':' ss Z

sqlTimestamp->yyyy '-' MM '-' dd ' ' HH ':' .mm ':' ss

digit12 Sh/Rd 13

mm Goto 11

minute Gt/Rd 7

State 11

( 10 )

sqlTimestamp->yyyy '-' MM '-' dd ' ' HH ':' mm .':' ss Z

sqlTimestamp->yyyy '-' MM '-' dd ' ' HH ':' mm .':' ss

':' Shift 12

State 12

( 11 )

sqlTimestamp->yyyy '-' MM '-' dd ' ' HH ':' mm ':' .ss Z

sqlTimestamp->yyyy '-' MM '-' dd ' ' HH ':' mm ':' .ss

digit12 Sh/Rd 14

ss Goto 13

second Gt/Rd 8

State 13

( 12 )

sqlTimestamp->yyyy '-' MM '-' dd ' ' HH ':' mm ':' ss .Z

sqlTimestamp->yyyy '-' MM '-' dd ' ' HH ':' mm ':' ss . (2)

sqlTimestamp->yyyy '-' MM '-' dd ' ' HH ':' mm ':' ss . (2)

rfc822String4 Sh/Rd 18

rfc822String3 Sh/Rd 17

rfc822String2 Sh/Rd 16

rfc822String1 Sh/Rd 15

Z Gt/Rd 1

rfc822 Gt/Rd 9

Eof Reduce 2

First Map for Nonterminals

mm ==>> { digit12}

HH ==>> { digit12}

second ==>> { digit12}

MM ==>> { digit12}

hour23 ==>> { digit12}

minute ==>> { digit12}

dd ==>> { digit12}

dayInMonth ==>> { digit12}

rfc822 ==>> { rfc822String1 rfc822String2 rfc822String3 rfc822String4}

month ==>> { digit12}

yyyy ==>> { year4}

ss ==>> { digit12}

sqlTimestamp ==>> { year4}

Z ==>> { rfc822String1 rfc822String2 rfc822String3 rfc822String4}

Accept ==>> { year4}

Closure for Nonterminals

mm ==>> { minute}

HH ==>> { hour23}

second ==>> {}

MM ==>> { month}

hour23 ==>> {}

minute ==>> {}

dd ==>> { dayInMonth}

dayInMonth ==>> {}

rfc822 ==>> {}

month ==>> {}

yyyy ==>> {}

ss ==>> { second}

sqlTimestamp ==>> { yyyy}

Z ==>> { rfc822}

Accept ==>> { yyyy sqlTimestamp}

Nullable Nonterminals

mm ==>> false

HH ==>> false

second ==>> false

MM ==>> false

hour23 ==>> false

minute ==>> false

dd ==>> false

dayInMonth ==>> false

rfc822 ==>> false

month ==>> false

yyyy ==>> false

ss ==>> false

sqlTimestamp ==>> false

Z ==>> false

Accept ==>> false