State 0: input ::= * STRING input ::= * list list ::= * CURLY_OPEN CURLY_CLOSE list ::= * CURLY_OPEN list_contents CURLY_CLOSE STRING shift 3 CURLY_OPEN shift 1 list shift 4 input accept State 1: list_contents ::= * value list_contents ::= * value COMMA list_contents list ::= * CURLY_OPEN CURLY_CLOSE list ::= CURLY_OPEN * CURLY_CLOSE list ::= * CURLY_OPEN list_contents CURLY_CLOSE list ::= CURLY_OPEN * list_contents CURLY_CLOSE value ::= * STRING value ::= * list STRING shift 8 CURLY_OPEN shift 1 CURLY_CLOSE shift 10 list_contents shift 6 list shift 9 value shift 5 State 2: list_contents ::= * value list_contents ::= * value COMMA list_contents list_contents ::= value COMMA * list_contents list ::= * CURLY_OPEN CURLY_CLOSE list ::= * CURLY_OPEN list_contents CURLY_CLOSE value ::= * STRING value ::= * list STRING shift 8 CURLY_OPEN shift 1 list_contents shift 7 list shift 9 value shift 5 State 3: (0) input ::= STRING * $ reduce 0 State 4: (1) input ::= list * $ reduce 1 State 5: (2) list_contents ::= value * list_contents ::= value * COMMA list_contents COMMA shift 2 {default} reduce 2 State 6: list ::= CURLY_OPEN list_contents * CURLY_CLOSE CURLY_CLOSE shift 11 State 7: (3) list_contents ::= value COMMA list_contents * {default} reduce 3 State 8: (6) value ::= STRING * {default} reduce 6 State 9: (7) value ::= list * {default} reduce 7 State 10: (4) list ::= CURLY_OPEN CURLY_CLOSE * {default} reduce 4 State 11: (5) list ::= CURLY_OPEN list_contents CURLY_CLOSE * {default} reduce 5 ---------------------------------------------------- Symbols: 0: $: 1: STRING 2: COMMA 3: CURLY_OPEN 4: CURLY_CLOSE 5: error: 6: list_contents: STRING CURLY_OPEN 7: list: CURLY_OPEN 8: value: STRING CURLY_OPEN 9: input: STRING CURLY_OPEN