State 0: input ::= * processes processes ::= * process_or_template NAME CURLY_OPEN statements CURLY_CLOSE processes ::= * process_or_template NAME CURLY_OPEN statements CURLY_CLOSE processes process_or_template ::= * PROCESS process_or_template ::= * TEMPLATE PROCESS shift 52 TEMPLATE shift 53 processes shift 25 process_or_template shift 26 input accept State 1: statement ::= dotted_name ROUND_OPEN * statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON dotted_name ::= * NAME dotted_name ::= * NAME DOT dotted_name (16) statement_args_maybe ::= * statement_args_maybe ::= * list_contents list_contents ::= * value list_contents ::= * value COMMA list_contents list ::= * CURLY_OPEN CURLY_CLOSE list ::= * CURLY_OPEN list_contents CURLY_CLOSE map ::= * BRACKET_OPEN BRACKET_CLOSE map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE value ::= * STRING value ::= * dotted_name value ::= * list value ::= * map NAME shift 31 CURLY_OPEN shift 3 BRACKET_OPEN shift 4 STRING shift 62 dotted_name shift 63 statement_args_maybe shift 29 list_contents shift 57 list shift 64 map shift 65 value shift 32 {default} reduce 16 State 2: statement ::= dotted_name ARROW dotted_name ROUND_OPEN * statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON dotted_name ::= * NAME dotted_name ::= * NAME DOT dotted_name (16) statement_args_maybe ::= * statement_args_maybe ::= * list_contents list_contents ::= * value list_contents ::= * value COMMA list_contents list ::= * CURLY_OPEN CURLY_CLOSE list ::= * CURLY_OPEN list_contents CURLY_CLOSE map ::= * BRACKET_OPEN BRACKET_CLOSE map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE value ::= * STRING value ::= * dotted_name value ::= * list value ::= * map NAME shift 31 CURLY_OPEN shift 3 BRACKET_OPEN shift 4 STRING shift 62 dotted_name shift 63 statement_args_maybe shift 38 list_contents shift 57 list shift 64 map shift 65 value shift 32 {default} reduce 16 State 3: dotted_name ::= * NAME dotted_name ::= * NAME DOT dotted_name 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 map ::= * BRACKET_OPEN BRACKET_CLOSE map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE value ::= * STRING value ::= * dotted_name value ::= * list value ::= * map NAME shift 31 CURLY_OPEN shift 3 CURLY_CLOSE shift 59 BRACKET_OPEN shift 4 STRING shift 62 dotted_name shift 63 list_contents shift 33 list shift 64 map shift 65 value shift 32 State 4: dotted_name ::= * NAME dotted_name ::= * NAME DOT dotted_name list ::= * CURLY_OPEN CURLY_CLOSE list ::= * CURLY_OPEN list_contents CURLY_CLOSE map_contents ::= * value COLON value map_contents ::= * value COLON value COMMA map_contents map ::= * BRACKET_OPEN BRACKET_CLOSE map ::= BRACKET_OPEN * BRACKET_CLOSE map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE map ::= BRACKET_OPEN * map_contents BRACKET_CLOSE value ::= * STRING value ::= * dotted_name value ::= * list value ::= * map NAME shift 31 CURLY_OPEN shift 3 BRACKET_OPEN shift 4 BRACKET_CLOSE shift 66 STRING shift 62 dotted_name shift 63 list shift 64 map_contents shift 36 map shift 65 value shift 34 State 5: dotted_name ::= * NAME dotted_name ::= * NAME DOT dotted_name 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 map ::= * BRACKET_OPEN BRACKET_CLOSE map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE value ::= * STRING value ::= * dotted_name value ::= * list value ::= * map NAME shift 31 CURLY_OPEN shift 3 BRACKET_OPEN shift 4 STRING shift 62 dotted_name shift 63 list_contents shift 58 list shift 64 map shift 65 value shift 32 State 6: dotted_name ::= * NAME dotted_name ::= * NAME DOT dotted_name list ::= * CURLY_OPEN CURLY_CLOSE list ::= * CURLY_OPEN list_contents CURLY_CLOSE map_contents ::= * value COLON value map_contents ::= * value COLON value COMMA map_contents map_contents ::= value COLON value COMMA * map_contents map ::= * BRACKET_OPEN BRACKET_CLOSE map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE value ::= * STRING value ::= * dotted_name value ::= * list value ::= * map NAME shift 31 CURLY_OPEN shift 3 BRACKET_OPEN shift 4 STRING shift 62 dotted_name shift 63 list shift 64 map_contents shift 61 map shift 65 value shift 34 State 7: dotted_name ::= * NAME dotted_name ::= * NAME DOT dotted_name list ::= * CURLY_OPEN CURLY_CLOSE list ::= * CURLY_OPEN list_contents CURLY_CLOSE map_contents ::= value COLON * value map_contents ::= value COLON * value COMMA map_contents map ::= * BRACKET_OPEN BRACKET_CLOSE map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE value ::= * STRING value ::= * dotted_name value ::= * list value ::= * map NAME shift 31 CURLY_OPEN shift 3 BRACKET_OPEN shift 4 STRING shift 62 dotted_name shift 63 list shift 64 map shift 65 value shift 35 State 8: statement ::= IF ROUND_OPEN * value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON dotted_name ::= * NAME dotted_name ::= * NAME DOT dotted_name list ::= * CURLY_OPEN CURLY_CLOSE list ::= * CURLY_OPEN list_contents CURLY_CLOSE map ::= * BRACKET_OPEN BRACKET_CLOSE map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE value ::= * STRING value ::= * dotted_name value ::= * list value ::= * map NAME shift 31 CURLY_OPEN shift 3 BRACKET_OPEN shift 4 STRING shift 62 dotted_name shift 63 list shift 64 map shift 65 value shift 41 State 9: elif ::= ELIF ROUND_OPEN * value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif ::= ELIF ROUND_OPEN * value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif dotted_name ::= * NAME dotted_name ::= * NAME DOT dotted_name list ::= * CURLY_OPEN CURLY_CLOSE list ::= * CURLY_OPEN list_contents CURLY_CLOSE map ::= * BRACKET_OPEN BRACKET_CLOSE map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE value ::= * STRING value ::= * dotted_name value ::= * list value ::= * map NAME shift 31 CURLY_OPEN shift 3 BRACKET_OPEN shift 4 STRING shift 62 dotted_name shift 63 list shift 64 map shift 65 value shift 48 State 10: processes ::= process_or_template NAME CURLY_OPEN * statements CURLY_CLOSE processes ::= process_or_template NAME CURLY_OPEN * statements CURLY_CLOSE processes statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON statements ::= * statement statements ::= * statement statements dotted_name ::= * NAME dotted_name ::= * NAME DOT dotted_name NAME shift 31 IF shift 40 statement shift 13 statements shift 28 dotted_name shift 24 State 11: statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN * statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON statements ::= * statement statements ::= * statement statements dotted_name ::= * NAME dotted_name ::= * NAME DOT dotted_name NAME shift 31 IF shift 40 statement shift 13 statements shift 43 dotted_name shift 24 State 12: statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON else_maybe ::= ELSE CURLY_OPEN * statements CURLY_CLOSE statements ::= * statement statements ::= * statement statements dotted_name ::= * NAME dotted_name ::= * NAME DOT dotted_name NAME shift 31 IF shift 40 statement shift 13 statements shift 46 dotted_name shift 24 State 13: statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON statements ::= * statement (12) statements ::= statement * statements ::= * statement statements statements ::= statement * statements dotted_name ::= * NAME dotted_name ::= * NAME DOT dotted_name NAME shift 31 IF shift 40 statement shift 13 statements shift 71 dotted_name shift 24 {default} reduce 12 State 14: statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN * statements CURLY_CLOSE elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN * statements CURLY_CLOSE elif statements ::= * statement statements ::= * statement statements dotted_name ::= * NAME dotted_name ::= * NAME DOT dotted_name NAME shift 31 IF shift 40 statement shift 13 statements shift 50 dotted_name shift 24 State 15: processes ::= * process_or_template NAME CURLY_OPEN statements CURLY_CLOSE (1) processes ::= process_or_template NAME CURLY_OPEN statements CURLY_CLOSE * processes ::= * process_or_template NAME CURLY_OPEN statements CURLY_CLOSE processes processes ::= process_or_template NAME CURLY_OPEN statements CURLY_CLOSE * processes process_or_template ::= * PROCESS process_or_template ::= * TEMPLATE PROCESS shift 52 TEMPLATE shift 53 processes shift 51 process_or_template shift 26 {default} reduce 1 State 16: statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE * elif_maybe else_maybe name_maybe SEMICOLON (6) elif_maybe ::= * elif_maybe ::= * elif elif ::= * ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif ::= * ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif ELIF shift 47 elif_maybe shift 21 elif shift 72 {default} reduce 6 State 17: statement ::= dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE * name_maybe SEMICOLON (30) name_maybe ::= * name_maybe ::= * NAME NAME shift 55 name_maybe shift 30 {default} reduce 30 State 18: dotted_name ::= * NAME dotted_name ::= * NAME DOT dotted_name dotted_name ::= NAME DOT * dotted_name NAME shift 31 dotted_name shift 56 State 19: statement ::= dotted_name ARROW * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON dotted_name ::= * NAME dotted_name ::= * NAME DOT dotted_name NAME shift 31 dotted_name shift 37 State 20: statement ::= dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE * name_maybe SEMICOLON (30) name_maybe ::= * name_maybe ::= * NAME NAME shift 55 name_maybe shift 39 {default} reduce 30 State 21: statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe * else_maybe name_maybe SEMICOLON (10) else_maybe ::= * else_maybe ::= * ELSE CURLY_OPEN statements CURLY_CLOSE ELSE shift 45 else_maybe shift 22 {default} reduce 10 State 22: statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe * name_maybe SEMICOLON (30) name_maybe ::= * name_maybe ::= * NAME NAME shift 55 name_maybe shift 44 {default} reduce 30 State 23: elif ::= * ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE (8) elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE * elif ::= * ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE * elif ELIF shift 47 elif shift 73 {default} reduce 8 State 24: statement ::= dotted_name * ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON statement ::= dotted_name * ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON ROUND_OPEN shift 1 ARROW shift 19 State 25: (0) input ::= processes * $ reduce 0 State 26: processes ::= process_or_template * NAME CURLY_OPEN statements CURLY_CLOSE processes ::= process_or_template * NAME CURLY_OPEN statements CURLY_CLOSE processes NAME shift 27 State 27: processes ::= process_or_template NAME * CURLY_OPEN statements CURLY_CLOSE processes ::= process_or_template NAME * CURLY_OPEN statements CURLY_CLOSE processes CURLY_OPEN shift 10 State 28: processes ::= process_or_template NAME CURLY_OPEN statements * CURLY_CLOSE processes ::= process_or_template NAME CURLY_OPEN statements * CURLY_CLOSE processes CURLY_CLOSE shift 15 State 29: statement ::= dotted_name ROUND_OPEN statement_args_maybe * ROUND_CLOSE name_maybe SEMICOLON ROUND_CLOSE shift 17 State 30: statement ::= dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe * SEMICOLON SEMICOLON shift 54 State 31: (14) dotted_name ::= NAME * dotted_name ::= NAME * DOT dotted_name DOT shift 18 {default} reduce 14 State 32: (18) list_contents ::= value * list_contents ::= value * COMMA list_contents COMMA shift 5 {default} reduce 18 State 33: list ::= CURLY_OPEN list_contents * CURLY_CLOSE CURLY_CLOSE shift 60 State 34: map_contents ::= value * COLON value map_contents ::= value * COLON value COMMA map_contents COLON shift 7 State 35: (22) map_contents ::= value COLON value * map_contents ::= value COLON value * COMMA map_contents COMMA shift 6 {default} reduce 22 State 36: map ::= BRACKET_OPEN map_contents * BRACKET_CLOSE BRACKET_CLOSE shift 67 State 37: statement ::= dotted_name ARROW dotted_name * ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON ROUND_OPEN shift 2 State 38: statement ::= dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe * ROUND_CLOSE name_maybe SEMICOLON ROUND_CLOSE shift 20 State 39: statement ::= dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe * SEMICOLON SEMICOLON shift 68 State 40: statement ::= IF * ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON ROUND_OPEN shift 8 State 41: statement ::= IF ROUND_OPEN value * ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON ROUND_CLOSE shift 42 State 42: statement ::= IF ROUND_OPEN value ROUND_CLOSE * CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON CURLY_OPEN shift 11 State 43: statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements * CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON CURLY_CLOSE shift 16 State 44: statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe * SEMICOLON SEMICOLON shift 69 State 45: else_maybe ::= ELSE * CURLY_OPEN statements CURLY_CLOSE CURLY_OPEN shift 12 State 46: else_maybe ::= ELSE CURLY_OPEN statements * CURLY_CLOSE CURLY_CLOSE shift 70 State 47: elif ::= ELIF * ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif ::= ELIF * ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif ROUND_OPEN shift 9 State 48: elif ::= ELIF ROUND_OPEN value * ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif ::= ELIF ROUND_OPEN value * ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif ROUND_CLOSE shift 49 State 49: elif ::= ELIF ROUND_OPEN value ROUND_CLOSE * CURLY_OPEN statements CURLY_CLOSE elif ::= ELIF ROUND_OPEN value ROUND_CLOSE * CURLY_OPEN statements CURLY_CLOSE elif CURLY_OPEN shift 14 State 50: elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements * CURLY_CLOSE elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements * CURLY_CLOSE elif CURLY_CLOSE shift 23 State 51: (2) processes ::= process_or_template NAME CURLY_OPEN statements CURLY_CLOSE processes * {default} reduce 2 State 52: (32) process_or_template ::= PROCESS * {default} reduce 32 State 53: (33) process_or_template ::= TEMPLATE * {default} reduce 33 State 54: (3) statement ::= dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON * {default} reduce 3 State 55: (31) name_maybe ::= NAME * {default} reduce 31 State 56: (15) dotted_name ::= NAME DOT dotted_name * {default} reduce 15 State 57: (17) statement_args_maybe ::= list_contents * {default} reduce 17 State 58: (19) list_contents ::= value COMMA list_contents * {default} reduce 19 State 59: (20) list ::= CURLY_OPEN CURLY_CLOSE * {default} reduce 20 State 60: (21) list ::= CURLY_OPEN list_contents CURLY_CLOSE * {default} reduce 21 State 61: (23) map_contents ::= value COLON value COMMA map_contents * {default} reduce 23 State 62: (26) value ::= STRING * {default} reduce 26 State 63: (27) value ::= dotted_name * {default} reduce 27 State 64: (28) value ::= list * {default} reduce 28 State 65: (29) value ::= map * {default} reduce 29 State 66: (24) map ::= BRACKET_OPEN BRACKET_CLOSE * {default} reduce 24 State 67: (25) map ::= BRACKET_OPEN map_contents BRACKET_CLOSE * {default} reduce 25 State 68: (4) statement ::= dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON * {default} reduce 4 State 69: (5) statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON * {default} reduce 5 State 70: (11) else_maybe ::= ELSE CURLY_OPEN statements CURLY_CLOSE * {default} reduce 11 State 71: (13) statements ::= statement statements * {default} reduce 13 State 72: (7) elif_maybe ::= elif * {default} reduce 7 State 73: (9) elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif * {default} reduce 9 ---------------------------------------------------- Symbols: 0: $: 1: NAME 2: CURLY_OPEN 3: CURLY_CLOSE 4: ROUND_OPEN 5: ROUND_CLOSE 6: SEMICOLON 7: ARROW 8: IF 9: ELIF 10: ELSE 11: DOT 12: COMMA 13: COLON 14: BRACKET_OPEN 15: BRACKET_CLOSE 16: STRING 17: PROCESS 18: TEMPLATE 19: error: 20: processes: PROCESS TEMPLATE 21: statement: NAME IF 22: elif_maybe: ELIF 23: elif: ELIF 24: else_maybe: ELSE 25: statements: NAME IF 26: dotted_name: NAME 27: statement_args_maybe: NAME CURLY_OPEN BRACKET_OPEN STRING 28: list_contents: NAME CURLY_OPEN BRACKET_OPEN STRING 29: list: CURLY_OPEN 30: map_contents: NAME CURLY_OPEN BRACKET_OPEN STRING 31: map: BRACKET_OPEN 32: value: NAME CURLY_OPEN BRACKET_OPEN STRING 33: name_maybe: NAME 34: process_or_template: PROCESS TEMPLATE 35: input: PROCESS TEMPLATE