| %token value_number value_string |
| %token begin_object end_object |
| %token begin_array end_array |
| %token literal_true literal_false literal_null |
| %token name_separator value_separator |
| |
| %% |
| |
| value: |
| object | array | value_string | value_number | literal_true | literal_false | literal_null |
| ; |
| |
| object: |
| begin_object end_object |
| | begin_object object_value_list end_object |
| ; |
| |
| object_value_list: |
| value_string name_separator value |
| | value_string name_separator value value_separator object_value_list |
| ; |
| |
| array: |
| begin_array end_array |
| | begin_array array_value_list end_array |
| ; |
| |
| array_value_list: |
| value { /* value in array_value_list */ } |
| | value value_separator array_value_list |
| ; |