Grammar

    0 $accept: value $end

    1 value: object
    2      | array
    3      | value_string
    4      | value_number
    5      | literal_true
    6      | literal_false
    7      | literal_null

    8 object: begin_object end_object
    9       | begin_object object_value_list end_object

   10 object_value_list: value_string name_separator value
   11                  | value_string name_separator value value_separator object_value_list

   12 array: begin_array end_array
   13      | begin_array array_value_list end_array

   14 array_value_list: value
   15                 | value value_separator array_value_list


Terminals, with rules where they appear

$end (0) 0
error (256)
value_number (258) 4
value_string (259) 3 10 11
begin_object (260) 8 9
end_object (261) 8 9
begin_array (262) 12 13
end_array (263) 12 13
literal_true (264) 5
literal_false (265) 6
literal_null (266) 7
name_separator (267) 10 11
value_separator (268) 11 15


Nonterminals, with rules where they appear

$accept (14)
    on left: 0
value (15)
    on left: 1 2 3 4 5 6 7, on right: 0 10 11 14 15
object (16)
    on left: 8 9, on right: 1
object_value_list (17)
    on left: 10 11, on right: 9 11
array (18)
    on left: 12 13, on right: 2
array_value_list (19)
    on left: 14 15, on right: 13 15


State 0

    0 $accept: . value $end
    1 value: . object
    2      | . array
    3      | . value_string
    4      | . value_number
    5      | . literal_true
    6      | . literal_false
    7      | . literal_null
    8 object: . begin_object end_object
    9       | . begin_object object_value_list end_object
   12 array: . begin_array end_array
   13      | . begin_array array_value_list end_array

    value_number   shift, and go to state 1
    value_string   shift, and go to state 2
    begin_object   shift, and go to state 3
    begin_array    shift, and go to state 4
    literal_true   shift, and go to state 5
    literal_false  shift, and go to state 6
    literal_null   shift, and go to state 7

    value   go to state 8
    object  go to state 9
    array   go to state 10


State 1

    4 value: value_number .

    $default  reduce using rule 4 (value)


State 2

    3 value: value_string .

    $default  reduce using rule 3 (value)


State 3

    8 object: begin_object . end_object
    9       | begin_object . object_value_list end_object
   10 object_value_list: . value_string name_separator value
   11                  | . value_string name_separator value value_separator object_value_list

    value_string  shift, and go to state 11
    end_object    shift, and go to state 12

    object_value_list  go to state 13


State 4

    1 value: . object
    2      | . array
    3      | . value_string
    4      | . value_number
    5      | . literal_true
    6      | . literal_false
    7      | . literal_null
    8 object: . begin_object end_object
    9       | . begin_object object_value_list end_object
   12 array: . begin_array end_array
   12      | begin_array . end_array
   13      | . begin_array array_value_list end_array
   13      | begin_array . array_value_list end_array
   14 array_value_list: . value
   15                 | . value value_separator array_value_list

    value_number   shift, and go to state 1
    value_string   shift, and go to state 2
    begin_object   shift, and go to state 3
    begin_array    shift, and go to state 4
    end_array      shift, and go to state 14
    literal_true   shift, and go to state 5
    literal_false  shift, and go to state 6
    literal_null   shift, and go to state 7

    value             go to state 15
    object            go to state 9
    array             go to state 10
    array_value_list  go to state 16


State 5

    5 value: literal_true .

    $default  reduce using rule 5 (value)


State 6

    6 value: literal_false .

    $default  reduce using rule 6 (value)


State 7

    7 value: literal_null .

    $default  reduce using rule 7 (value)


State 8

    0 $accept: value . $end

    $end  shift, and go to state 17


State 9

    1 value: object .

    $default  reduce using rule 1 (value)


State 10

    2 value: array .

    $default  reduce using rule 2 (value)


State 11

   10 object_value_list: value_string . name_separator value
   11                  | value_string . name_separator value value_separator object_value_list

    name_separator  shift, and go to state 18


State 12

    8 object: begin_object end_object .

    $default  reduce using rule 8 (object)


State 13

    9 object: begin_object object_value_list . end_object

    end_object  shift, and go to state 19


State 14

   12 array: begin_array end_array .

    $default  reduce using rule 12 (array)


State 15

   14 array_value_list: value .  [end_array]
   15                 | value . value_separator array_value_list

    value_separator  shift, and go to state 20

    $default  reduce using rule 14 (array_value_list)


State 16

   13 array: begin_array array_value_list . end_array

    end_array  shift, and go to state 21


State 17

    0 $accept: value $end .

    $default  accept


State 18

    1 value: . object
    2      | . array
    3      | . value_string
    4      | . value_number
    5      | . literal_true
    6      | . literal_false
    7      | . literal_null
    8 object: . begin_object end_object
    9       | . begin_object object_value_list end_object
   10 object_value_list: value_string name_separator . value
   11                  | value_string name_separator . value value_separator object_value_list
   12 array: . begin_array end_array
   13      | . begin_array array_value_list end_array

    value_number   shift, and go to state 1
    value_string   shift, and go to state 2
    begin_object   shift, and go to state 3
    begin_array    shift, and go to state 4
    literal_true   shift, and go to state 5
    literal_false  shift, and go to state 6
    literal_null   shift, and go to state 7

    value   go to state 22
    object  go to state 9
    array   go to state 10


State 19

    9 object: begin_object object_value_list end_object .

    $default  reduce using rule 9 (object)


State 20

    1 value: . object
    2      | . array
    3      | . value_string
    4      | . value_number
    5      | . literal_true
    6      | . literal_false
    7      | . literal_null
    8 object: . begin_object end_object
    9       | . begin_object object_value_list end_object
   12 array: . begin_array end_array
   13      | . begin_array array_value_list end_array
   14 array_value_list: . value
   15                 | . value value_separator array_value_list
   15                 | value value_separator . array_value_list

    value_number   shift, and go to state 1
    value_string   shift, and go to state 2
    begin_object   shift, and go to state 3
    begin_array    shift, and go to state 4
    literal_true   shift, and go to state 5
    literal_false  shift, and go to state 6
    literal_null   shift, and go to state 7

    value             go to state 15
    object            go to state 9
    array             go to state 10
    array_value_list  go to state 23


State 21

   13 array: begin_array array_value_list end_array .

    $default  reduce using rule 13 (array)


State 22

   10 object_value_list: value_string name_separator value .  [end_object]
   11                  | value_string name_separator value . value_separator object_value_list

    value_separator  shift, and go to state 24

    $default  reduce using rule 10 (object_value_list)


State 23

   15 array_value_list: value value_separator array_value_list .

    $default  reduce using rule 15 (array_value_list)


State 24

   10 object_value_list: . value_string name_separator value
   11                  | . value_string name_separator value value_separator object_value_list
   11                  | value_string name_separator value value_separator . object_value_list

    value_string  shift, and go to state 11

    object_value_list  go to state 25


State 25

   11 object_value_list: value_string name_separator value value_separator object_value_list .

    $default  reduce using rule 11 (object_value_list)
