——– Grammar ——–

rule 1 data: null “;” rule 2 data: bool “;” rule 3 data: integer “;” rule 4 data: double “;” rule 5 data: string “;” rule 6 data: assoc_array rule 7 data: object rule 8 null: “N” rule 9 bool: “b” “:” NUMBER rule 10 integer: “i” “:” NUMBER rule 11 double: “d” “:” NUMBER rule 12 string: “s” “:” NUMBER “:” STRING rule 13 object: “O” “:” NUMBER “:” STRING “:” NUMBER “:” “{” attribute_list “}” rule 14 attribute_list: attribute_list attribute rule 15 attribute_list: rule 16 attribute: data data rule 17 assoc_array: “a” “:” NUMBER “:” “{” attribute_list “}”

——- Symbols ——-

**Nonterminals, with rules where they appear

$start (15)
  on right: 
  on left : 
data (16)
  on right: 16
  on left : 1 2 3 4 5 6 7
null (17)
  on right: 1
  on left : 8
bool (18)
  on right: 2
  on left : 9
integer (19)
  on right: 3
  on left : 10
double (20)
  on right: 4
  on left : 11
string (21)
  on right: 5
  on left : 12
assoc_array (22)
  on right: 6
  on left : 17
object (23)
  on right: 7
  on left : 13
attribute_list (24)
  on right: 13 14 17
  on left : 14 15
attribute (25)
  on right: 14
  on left : 16

**Terminals, with rules where they appear

$end (0) 
error (1) 
";" (2) 1 2 3 4 5
"N" (3) 8
"b" (4) 9
":" (5) 9 10 11 12 13 17
NUMBER (6) 9 10 11 12 13 17
"i" (7) 10
"d" (8) 11
"s" (9) 12
STRING (10) 12 13
"O" (11) 13
"{" (12) 13 17
"}" (13) 13 17
"a" (14) 17

——— State ———

state 0

"N"           shift, and go to state 9
"b"           shift, and go to state 10
"i"           shift, and go to state 11
"d"           shift, and go to state 12
"s"           shift, and go to state 13
"O"           shift, and go to state 14
"a"           shift, and go to state 15

data          go to state 1
null          go to state 2
bool          go to state 3
integer       go to state 4
double        go to state 5
string        go to state 6
assoc_array   go to state 7
object        go to state 8

state 1

$end          shift, and go to state 16

state 2

 1) data : null _ ";"

";"           shift, and go to state 17

state 3

 2) data : bool _ ";"

";"           shift, and go to state 18

state 4

 3) data : integer _ ";"

";"           shift, and go to state 19

state 5

 4) data : double _ ";"

";"           shift, and go to state 20

state 6

 5) data : string _ ";"

";"           shift, and go to state 21

state 7

 6) data : assoc_array _

$default      reduce using rule 6 (data)

state 8

 7) data : object _

$default      reduce using rule 7 (data)

state 9

 8) null : "N" _

$default      reduce using rule 8 (null)

state 10

 9) bool : "b" _ ":" NUMBER

":"           shift, and go to state 22

state 11

10) integer : "i" _ ":" NUMBER

":"           shift, and go to state 23

state 12

11) double : "d" _ ":" NUMBER

":"           shift, and go to state 24

state 13

12) string : "s" _ ":" NUMBER ":" STRING

":"           shift, and go to state 25

state 14

13) object : "O" _ ":" NUMBER ":" STRING ":" NUMBER ":" "{" attribute_list "}"

":"           shift, and go to state 26

state 15

17) assoc_array : "a" _ ":" NUMBER ":" "{" attribute_list "}"

":"           shift, and go to state 27

state 16

$end          shift, and go to state 28

state 17

 1) data : null ";" _

$default      reduce using rule 1 (data)

state 18

 2) data : bool ";" _

$default      reduce using rule 2 (data)

state 19

 3) data : integer ";" _

$default      reduce using rule 3 (data)

state 20

 4) data : double ";" _

$default      reduce using rule 4 (data)

state 21

 5) data : string ";" _

$default      reduce using rule 5 (data)

state 22

 9) bool : "b" ":" _ NUMBER

NUMBER        shift, and go to state 29

state 23

10) integer : "i" ":" _ NUMBER

NUMBER        shift, and go to state 30

state 24

11) double : "d" ":" _ NUMBER

NUMBER        shift, and go to state 31

state 25

12) string : "s" ":" _ NUMBER ":" STRING

NUMBER        shift, and go to state 32

state 26

13) object : "O" ":" _ NUMBER ":" STRING ":" NUMBER ":" "{" attribute_list "}"

NUMBER        shift, and go to state 33

state 27

17) assoc_array : "a" ":" _ NUMBER ":" "{" attribute_list "}"

NUMBER        shift, and go to state 34

state 28

$default      accept

state 29

 9) bool : "b" ":" NUMBER _

$default      reduce using rule 9 (bool)

state 30

10) integer : "i" ":" NUMBER _

$default      reduce using rule 10 (integer)

state 31

11) double : "d" ":" NUMBER _

$default      reduce using rule 11 (double)

state 32

12) string : "s" ":" NUMBER _ ":" STRING

":"           shift, and go to state 35

state 33

13) object : "O" ":" NUMBER _ ":" STRING ":" NUMBER ":" "{" attribute_list "}"

":"           shift, and go to state 36

state 34

17) assoc_array : "a" ":" NUMBER _ ":" "{" attribute_list "}"

":"           shift, and go to state 37

state 35

12) string : "s" ":" NUMBER ":" _ STRING

STRING        shift, and go to state 38

state 36

13) object : "O" ":" NUMBER ":" _ STRING ":" NUMBER ":" "{" attribute_list "}"

STRING        shift, and go to state 39

state 37

17) assoc_array : "a" ":" NUMBER ":" _ "{" attribute_list "}"

"{"           shift, and go to state 40

state 38

12) string : "s" ":" NUMBER ":" STRING _

$default      reduce using rule 12 (string)

state 39

13) object : "O" ":" NUMBER ":" STRING _ ":" NUMBER ":" "{" attribute_list "}"

":"           shift, and go to state 41

state 40

17) assoc_array : "a" ":" NUMBER ":" "{" _ attribute_list "}"

$default      reduce using rule 15 (attribute_list)

attribute_list  go to state 42

state 41

13) object : "O" ":" NUMBER ":" STRING ":" _ NUMBER ":" "{" attribute_list "}"

NUMBER        shift, and go to state 43

state 42

14) attribute_list : attribute_list _ attribute
17) assoc_array : "a" ":" NUMBER ":" "{" attribute_list _ "}"

"N"           shift, and go to state 9
"b"           shift, and go to state 10
"i"           shift, and go to state 11
"d"           shift, and go to state 12
"s"           shift, and go to state 13
"O"           shift, and go to state 14
"}"           shift, and go to state 46
"a"           shift, and go to state 15

null          go to state 2
bool          go to state 3
integer       go to state 4
double        go to state 5
string        go to state 6
assoc_array   go to state 7
object        go to state 8
attribute     go to state 44
data          go to state 45

state 43

13) object : "O" ":" NUMBER ":" STRING ":" NUMBER _ ":" "{" attribute_list "}"

":"           shift, and go to state 47

state 44

14) attribute_list : attribute_list attribute _

$default      reduce using rule 14 (attribute_list)

state 45

16) attribute : data _ data

"N"           shift, and go to state 9
"b"           shift, and go to state 10
"i"           shift, and go to state 11
"d"           shift, and go to state 12
"s"           shift, and go to state 13
"O"           shift, and go to state 14
"a"           shift, and go to state 15

null          go to state 2
bool          go to state 3
integer       go to state 4
double        go to state 5
string        go to state 6
assoc_array   go to state 7
object        go to state 8
data          go to state 48

state 46

17) assoc_array : "a" ":" NUMBER ":" "{" attribute_list "}" _

$default      reduce using rule 17 (assoc_array)

state 47

13) object : "O" ":" NUMBER ":" STRING ":" NUMBER ":" _ "{" attribute_list "}"

"{"           shift, and go to state 49

state 48

16) attribute : data data _

$default      reduce using rule 16 (attribute)

state 49

13) object : "O" ":" NUMBER ":" STRING ":" NUMBER ":" "{" _ attribute_list "}"

$default      reduce using rule 15 (attribute_list)

attribute_list  go to state 50

state 50

13) object : "O" ":" NUMBER ":" STRING ":" NUMBER ":" "{" attribute_list _ "}"
14) attribute_list : attribute_list _ attribute

"N"           shift, and go to state 9
"b"           shift, and go to state 10
"i"           shift, and go to state 11
"d"           shift, and go to state 12
"s"           shift, and go to state 13
"O"           shift, and go to state 14
"}"           shift, and go to state 51
"a"           shift, and go to state 15

null          go to state 2
bool          go to state 3
integer       go to state 4
double        go to state 5
string        go to state 6
assoc_array   go to state 7
object        go to state 8
attribute     go to state 44
data          go to state 45

state 51

13) object : "O" ":" NUMBER ":" STRING ":" NUMBER ":" "{" attribute_list "}" _

$default      reduce using rule 13 (object)