# GNU Bison XML Automaton Report

input grammar: parser.yy

### Table of Contents

## Reductions

### Nonterminals useless in grammar

### Terminals unused in grammar

"abs" "ceiling" "floor" "log2" "loge" "log10" "max" "min" "pow" "sample_rate" "sign" "sin" "start" "time" "time_millis"

### Rules useless in grammar

## Conflicts

## Grammar

0 $accept → program $end 1 program → blocks $end 2 blocks → main_block 3 | block 4 | blocks block 5 block → "also" one_or_more_statements "end" "also" 6 | "when" exp one_or_more_statements "end" "when" 7 main_block → one_or_more_statements 8 zero_or_more_statements → %empty 9 | zero_or_more_statements statement 10 one_or_more_statements → statement 11 | one_or_more_statements statement 12 statement → array_assignment 13 | assignment 14 | clear_statement 15 | continue_statement 16 | exit_statement 17 | for_statement 18 | if_statement 19 | procedure_call 20 | reset_statement 21 | wait_statement 22 | while_statement 23 array_assignment → "identifier" "[" exp "]" "=" exp 24 | "identifier" "[" exp "]" "=" "{" expression_list "}" 25 | "out_port" "[" exp "]" "=" exp 26 | "identifier" "$" "[" exp "]" "=" exp 27 | "identifier" "$" "[" exp "]" "=" string_exp 28 | "identifier" "$" "[" exp "]" "=" "{" string_list "}" 29 assignment → "identifier" "=" exp 30 | "in_port" "=" exp 31 | "out_port" "=" exp 32 | "identifier" "$" "=" exp 33 | "identifier" "$" "=" string_exp 34 clear_statement → "clear" "all" 35 continue_statement → "continue" "for" 36 | "continue" "while" 37 | "continue" "all" 38 exit_statement → "exit" "for" 39 | "exit" "while" 40 | "exit" "all" 41 for_statement → "for" assignment "to" exp zero_or_more_statements "next" 42 | "for" assignment "to" exp "step" exp zero_or_more_statements "next" 43 | "for" assignment "to" exp zero_or_more_statements "nexthighcpu" 44 | "for" assignment "to" exp "step" exp zero_or_more_statements "nexthighcpu" 45 elseif_group → %empty 46 | elseif_group elseif_clause 47 elseif_clause → "elseif" exp "then" zero_or_more_statements 48 if_statement → "if" exp "then" zero_or_more_statements elseif_group "end" "if" 49 | "if" exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" 50 procedure_call → "print" "(" "out_port" "," string_list ")" 51 | "set_channels" "(" "out_port" "," exp ")" 52 reset_statement → "reset" 53 wait_statement → "wait" exp 54 while_statement → "while" exp zero_or_more_statements "end" "while" 55 expression_list → exp 56 | expression_list "," exp 57 exp → "number" 58 | "note" 59 | "-" "number" 60 | "not" exp 61 | "in_port" 62 | "in_port" "[" exp "]" 63 | "out_port" 64 | "out_port" "[" exp "]" 65 | "identifier" 66 | "identifier" "[" exp "]" 67 | exp "+" exp 68 | exp "-" exp 69 | exp "*" exp 70 | exp "/" exp 71 | exp "comparison" exp 72 | exp "and" exp 73 | exp "or" exp 74 | "zeroargfunc" "(" ")" 75 | "channels" "(" "in_port" ")" 76 | "connected" "(" "in_port" ")" 77 | "connected" "(" "out_port" ")" 78 | "trigger" "(" "in_port" ")" 79 | "oneargfunc" "(" exp ")" 80 | "twoargfunc" "(" exp "," exp ")" 81 | exp "?" exp ":" exp 82 | "(" exp ")" 83 string_list → string_exp 84 | exp 85 | string_list "," string_exp 86 | string_list "," exp 87 string_exp → "quoted_string" 88 | "identifier" "$" 89 | "identifier" "$" "[" exp "]" 90 | "debug" "(" "identifier" ")" 91 | "debug" "(" "identifier" "$" ")" 92 | "debug" "(" "identifier" "[" "]" "," exp "," exp ")" 93 | "debug" "(" "identifier" "$" "[" "]" "," exp "," exp ")"

### Terminals, with rules where they appear

- $end (0) 0 1
- error (256)
- "abs" <std::string> (258)
- "all" <std::string> (259) 34 37 40
- "also" <std::string> (260) 5
- "and" <std::string> (261) 72
- "=" <std::string> (262) 23 24 25 26 27 28 29 30 31 32 33
- "ceiling" <std::string> (263)
- "channels" <std::string> (264) 75
- "clear" <std::string> (265) 34
- "connected" <std::string> (266) 76 77
- "continue" <std::string> (267) 35 36 37
- "debug" <std::string> (268) 90 91 92 93
- "else" <std::string> (269) 49
- "elseif" <std::string> (270) 47
- "end" <std::string> (271) 5 6 48 49 54
- "exit" <std::string> (272) 38 39 40
- "floor" <std::string> (273)
- "for" <std::string> (274) 35 38 41 42 43 44
- "if" <std::string> (275) 48 49
- "log2" <std::string> (276)
- "loge" <std::string> (277)
- "log10" <std::string> (278)
- "max" <std::string> (279)
- "min" <std::string> (280)
- "next" <std::string> (281) 41 42
- "nexthighcpu" <std::string> (282) 43 44
- "not" <std::string> (283) 60
- "or" <std::string> (284) 73
- "pow" <std::string> (285)
- "print" <std::string> (286) 50
- "reset" <std::string> (287) 52
- "sample_rate" <std::string> (288)
- "set_channels" <std::string> (289) 51
- "sign" <std::string> (290)
- "sin" <std::string> (291)
- "start" <std::string> (292)
- "step" <std::string> (293) 42 44
- "then" <std::string> (294) 47 48 49
- "time" <std::string> (295)
- "time_millis" <std::string> (296)
- "to" <std::string> (297) 41 42 43 44
- "trigger" <std::string> (298) 78
- "wait" <std::string> (299) 53
- "when" <std::string> (300) 6
- "while" <std::string> (301) 36 39 54
- "-" <std::string> (302) 59 68
- "+" <std::string> (303) 67
- "*" <std::string> (304) 69
- "/" <std::string> (305) 70
- "(" <std::string> (306) 50 51 74 75 76 77 78 79 80 82 90 91 92 93
- ")" <std::string> (307) 50 51 74 75 76 77 78 79 80 82 90 91 92 93
- "{" <std::string> (308) 24 28
- "}" <std::string> (309) 24 28
- "[" <std::string> (310) 23 24 25 26 27 28 62 64 66 89 92 93
- "]" <std::string> (311) 23 24 25 26 27 28 62 64 66 89 92 93
- "," <std::string> (312) 50 51 56 80 85 86 92 93
- "$" <std::string> (313) 26 27 28 32 33 88 89 91 93
- "?" <std::string> (314) 81
- ":" <std::string> (315) 81
- "identifier" <std::string> (316) 23 24 26 27 28 29 32 33 65 66 88 89 90 91 92 93
- "quoted_string" <std::string> (317) 87
- "number" <float> (318) 57 59
- "note" <std::string> (319) 58
- "in_port" <std::string> (320) 30 61 62 75 76 78
- "out_port" <std::string> (321) 25 31 50 51 63 64 77
- "zeroargfunc" <std::string> (322) 74
- "oneargfunc" <std::string> (323) 79
- "twoargfunc" <std::string> (324) 80
- "comparison" <std::string> (325) 71
- NEG (326)

### Nonterminals, with rules where they appear

- $accept (72)
  - on left: 0
- program (73)
  - on left: 1
  - on right: 0
- blocks <Blocks> (74)
  - on left: 2 3 4
  - on right: 1 4
- block <Block> (75)
  - on left: 5 6
  - on right: 3 4
- main_block <Block> (76)
  - on left: 7
  - on right: 2
- zero_or_more_statements <Statements> (77)
  - on left: 8 9
  - on right: 9 41 42 43 44 47 48 49 54
- one_or_more_statements <Statements> (78)
  - on left: 10 11
  - on right: 5 6 7 11
- statement <Line> (79)
  - on left: 12 13 14 15 16 17 18 19 20 21 22
  - on right: 9 10 11
- array_assignment <Line> (80)
  - on left: 23 24 25 26 27 28
  - on right: 12
- assignment <Line> (81)
  - on left: 29 30 31 32 33
  - on right: 13 41 42 43 44
- clear_statement <Line> (82)
  - on left: 34
  - on right: 14
- continue_statement <Line> (83)
  - on left: 35 36 37
  - on right: 15
- exit_statement <Line> (84)
  - on left: 38 39 40
  - on right: 16
- for_statement <Line> (85)
  - on left: 41 42 43 44
  - on right: 17
- elseif_group <Statements> (86)
  - on left: 45 46
  - on right: 46 48 49
- elseif_clause <Line> (87)
  - on left: 47
  - on right: 46
- if_statement <Line> (88)
  - on left: 48 49
  - on right: 18
- procedure_call <Line> (89)
  - on left: 50 51
  - on right: 19
- reset_statement <Line> (90)
  - on left: 52
  - on right: 20
- wait_statement <Line> (91)
  - on left: 53
  - on right: 21
- while_statement <Line> (92)
  - on left: 54
  - on right: 22
- expression_list <ExpressionList> (93)
  - on left: 55 56
  - on right: 24 56
- exp <Expression> (94)
  - on left: 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
  - on right: 6 23 24 25 26 27 28 29 30 31 32 41 42 43 44 47 48 49 51 53 54 55 56 60 62 64 66 67 68 69 70 71 72 73 79 80 81 82 84 86 89 92 93
- string_list <ExpressionList> (95)
  - on left: 83 84 85 86
  - on right: 28 50 85 86
- string_exp <Expression> (96)
  - on left: 87 88 89 90 91 92 93
  - on right: 27 33 83 85

## Automaton

### State 0

0 $accept → • program $end 1 program → • blocks $end 2 blocks → • main_block 3 | • block 4 | • blocks block 5 block → • "also" one_or_more_statements "end" "also" 6 | • "when" exp one_or_more_statements "end" "when" 7 main_block → • one_or_more_statements 10 one_or_more_statements → • statement 11 | • one_or_more_statements statement 12 statement → • array_assignment 13 | • assignment 14 | • clear_statement 15 | • continue_statement 16 | • exit_statement 17 | • for_statement 18 | • if_statement 19 | • procedure_call 20 | • reset_statement 21 | • wait_statement 22 | • while_statement 23 array_assignment → • "identifier" "[" exp "]" "=" exp 24 | • "identifier" "[" exp "]" "=" "{" expression_list "}" 25 | • "out_port" "[" exp "]" "=" exp 26 | • "identifier" "$" "[" exp "]" "=" exp 27 | • "identifier" "$" "[" exp "]" "=" string_exp 28 | • "identifier" "$" "[" exp "]" "=" "{" string_list "}" 29 assignment → • "identifier" "=" exp 30 | • "in_port" "=" exp 31 | • "out_port" "=" exp 32 | • "identifier" "$" "=" exp 33 | • "identifier" "$" "=" string_exp 34 clear_statement → • "clear" "all" 35 continue_statement → • "continue" "for" 36 | • "continue" "while" 37 | • "continue" "all" 38 exit_statement → • "exit" "for" 39 | • "exit" "while" 40 | • "exit" "all" 41 for_statement → • "for" assignment "to" exp zero_or_more_statements "next" 42 | • "for" assignment "to" exp "step" exp zero_or_more_statements "next" 43 | • "for" assignment "to" exp zero_or_more_statements "nexthighcpu" 44 | • "for" assignment "to" exp "step" exp zero_or_more_statements "nexthighcpu" 48 if_statement → • "if" exp "then" zero_or_more_statements elseif_group "end" "if" 49 | • "if" exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" 50 procedure_call → • "print" "(" "out_port" "," string_list ")" 51 | • "set_channels" "(" "out_port" "," exp ")" 52 reset_statement → • "reset" 53 wait_statement → • "wait" exp 54 while_statement → • "while" exp zero_or_more_statements "end" "while" "also" shift, and go to state 1 "clear" shift, and go to state 2 "continue" shift, and go to state 3 "exit" shift, and go to state 4 "for" shift, and go to state 5 "if" shift, and go to state 6 "print" shift, and go to state 7 "reset" shift, and go to state 8 "set_channels" shift, and go to state 9 "wait" shift, and go to state 10 "when" shift, and go to state 11 "while" shift, and go to state 12 "identifier" shift, and go to state 13 "in_port" shift, and go to state 14 "out_port" shift, and go to state 15 program go to state 16 blocks go to state 17 block go to state 18 main_block go to state 19 one_or_more_statements go to state 20 statement go to state 21 array_assignment go to state 22 assignment go to state 23 clear_statement go to state 24 continue_statement go to state 25 exit_statement go to state 26 for_statement go to state 27 if_statement go to state 28 procedure_call go to state 29 reset_statement go to state 30 wait_statement go to state 31 while_statement go to state 32

### State 1

5 block → "also" • one_or_more_statements "end" "also" 10 one_or_more_statements → • statement 11 | • one_or_more_statements statement 12 statement → • array_assignment 13 | • assignment 14 | • clear_statement 15 | • continue_statement 16 | • exit_statement 17 | • for_statement 18 | • if_statement 19 | • procedure_call 20 | • reset_statement 21 | • wait_statement 22 | • while_statement 23 array_assignment → • "identifier" "[" exp "]" "=" exp 24 | • "identifier" "[" exp "]" "=" "{" expression_list "}" 25 | • "out_port" "[" exp "]" "=" exp 26 | • "identifier" "$" "[" exp "]" "=" exp 27 | • "identifier" "$" "[" exp "]" "=" string_exp 28 | • "identifier" "$" "[" exp "]" "=" "{" string_list "}" 29 assignment → • "identifier" "=" exp 30 | • "in_port" "=" exp 31 | • "out_port" "=" exp 32 | • "identifier" "$" "=" exp 33 | • "identifier" "$" "=" string_exp 34 clear_statement → • "clear" "all" 35 continue_statement → • "continue" "for" 36 | • "continue" "while" 37 | • "continue" "all" 38 exit_statement → • "exit" "for" 39 | • "exit" "while" 40 | • "exit" "all" 41 for_statement → • "for" assignment "to" exp zero_or_more_statements "next" 42 | • "for" assignment "to" exp "step" exp zero_or_more_statements "next" 43 | • "for" assignment "to" exp zero_or_more_statements "nexthighcpu" 44 | • "for" assignment "to" exp "step" exp zero_or_more_statements "nexthighcpu" 48 if_statement → • "if" exp "then" zero_or_more_statements elseif_group "end" "if" 49 | • "if" exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" 50 procedure_call → • "print" "(" "out_port" "," string_list ")" 51 | • "set_channels" "(" "out_port" "," exp ")" 52 reset_statement → • "reset" 53 wait_statement → • "wait" exp 54 while_statement → • "while" exp zero_or_more_statements "end" "while" "clear" shift, and go to state 2 "continue" shift, and go to state 3 "exit" shift, and go to state 4 "for" shift, and go to state 5 "if" shift, and go to state 6 "print" shift, and go to state 7 "reset" shift, and go to state 8 "set_channels" shift, and go to state 9 "wait" shift, and go to state 10 "while" shift, and go to state 12 "identifier" shift, and go to state 13 "in_port" shift, and go to state 14 "out_port" shift, and go to state 15 one_or_more_statements go to state 33 statement go to state 21 array_assignment go to state 22 assignment go to state 23 clear_statement go to state 24 continue_statement go to state 25 exit_statement go to state 26 for_statement go to state 27 if_statement go to state 28 procedure_call go to state 29 reset_statement go to state 30 wait_statement go to state 31 while_statement go to state 32

### State 2

34 clear_statement → "clear" • "all" "all" shift, and go to state 34

### State 3

35 continue_statement → "continue" • "for" 36 | "continue" • "while" 37 | "continue" • "all" "all" shift, and go to state 35 "for" shift, and go to state 36 "while" shift, and go to state 37

### State 4

38 exit_statement → "exit" • "for" 39 | "exit" • "while" 40 | "exit" • "all" "all" shift, and go to state 38 "for" shift, and go to state 39 "while" shift, and go to state 40

### State 5

29 assignment → • "identifier" "=" exp 30 | • "in_port" "=" exp 31 | • "out_port" "=" exp 32 | • "identifier" "$" "=" exp 33 | • "identifier" "$" "=" string_exp 41 for_statement → "for" • assignment "to" exp zero_or_more_statements "next" 42 | "for" • assignment "to" exp "step" exp zero_or_more_statements "next" 43 | "for" • assignment "to" exp zero_or_more_statements "nexthighcpu" 44 | "for" • assignment "to" exp "step" exp zero_or_more_statements "nexthighcpu" "identifier" shift, and go to state 41 "in_port" shift, and go to state 14 "out_port" shift, and go to state 42 assignment go to state 43

### State 6

48 if_statement → "if" • exp "then" zero_or_more_statements elseif_group "end" "if" 49 | "if" • exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 58

### State 7

50 procedure_call → "print" • "(" "out_port" "," string_list ")" "(" shift, and go to state 59

### State 8

52 reset_statement → "reset" • $default reduce using rule 52 (reset_statement)

### State 9

51 procedure_call → "set_channels" • "(" "out_port" "," exp ")" "(" shift, and go to state 60

### State 10

53 wait_statement → "wait" • exp 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 61

### State 11

6 block → "when" • exp one_or_more_statements "end" "when" 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 62

### State 12

54 while_statement → "while" • exp zero_or_more_statements "end" "while" 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 63

### State 13

23 array_assignment → "identifier" • "[" exp "]" "=" exp 24 | "identifier" • "[" exp "]" "=" "{" expression_list "}" 26 | "identifier" • "$" "[" exp "]" "=" exp 27 | "identifier" • "$" "[" exp "]" "=" string_exp 28 | "identifier" • "$" "[" exp "]" "=" "{" string_list "}" 29 assignment → "identifier" • "=" exp 32 | "identifier" • "$" "=" exp 33 | "identifier" • "$" "=" string_exp "=" shift, and go to state 64 "[" shift, and go to state 65 "$" shift, and go to state 66

### State 14

30 assignment → "in_port" • "=" exp "=" shift, and go to state 67

### State 15

25 array_assignment → "out_port" • "[" exp "]" "=" exp 31 assignment → "out_port" • "=" exp "=" shift, and go to state 68 "[" shift, and go to state 69

### State 16

0 $accept → program • $end $end shift, and go to state 70

### State 17

1 program → blocks • $end 4 blocks → blocks • block 5 block → • "also" one_or_more_statements "end" "also" 6 | • "when" exp one_or_more_statements "end" "when" $end shift, and go to state 71 "also" shift, and go to state 1 "when" shift, and go to state 11 block go to state 72

### State 18

3 blocks → block • $default reduce using rule 3 (blocks)

### State 19

2 blocks → main_block • $default reduce using rule 2 (blocks)

### State 20

7 main_block → one_or_more_statements • [$end, "also", "when"] 11 one_or_more_statements → one_or_more_statements • statement 12 statement → • array_assignment 13 | • assignment 14 | • clear_statement 15 | • continue_statement 16 | • exit_statement 17 | • for_statement 18 | • if_statement 19 | • procedure_call 20 | • reset_statement 21 | • wait_statement 22 | • while_statement 23 array_assignment → • "identifier" "[" exp "]" "=" exp 24 | • "identifier" "[" exp "]" "=" "{" expression_list "}" 25 | • "out_port" "[" exp "]" "=" exp 26 | • "identifier" "$" "[" exp "]" "=" exp 27 | • "identifier" "$" "[" exp "]" "=" string_exp 28 | • "identifier" "$" "[" exp "]" "=" "{" string_list "}" 29 assignment → • "identifier" "=" exp 30 | • "in_port" "=" exp 31 | • "out_port" "=" exp 32 | • "identifier" "$" "=" exp 33 | • "identifier" "$" "=" string_exp 34 clear_statement → • "clear" "all" 35 continue_statement → • "continue" "for" 36 | • "continue" "while" 37 | • "continue" "all" 38 exit_statement → • "exit" "for" 39 | • "exit" "while" 40 | • "exit" "all" 41 for_statement → • "for" assignment "to" exp zero_or_more_statements "next" 42 | • "for" assignment "to" exp "step" exp zero_or_more_statements "next" 43 | • "for" assignment "to" exp zero_or_more_statements "nexthighcpu" 44 | • "for" assignment "to" exp "step" exp zero_or_more_statements "nexthighcpu" 48 if_statement → • "if" exp "then" zero_or_more_statements elseif_group "end" "if" 49 | • "if" exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" 50 procedure_call → • "print" "(" "out_port" "," string_list ")" 51 | • "set_channels" "(" "out_port" "," exp ")" 52 reset_statement → • "reset" 53 wait_statement → • "wait" exp 54 while_statement → • "while" exp zero_or_more_statements "end" "while" "clear" shift, and go to state 2 "continue" shift, and go to state 3 "exit" shift, and go to state 4 "for" shift, and go to state 5 "if" shift, and go to state 6 "print" shift, and go to state 7 "reset" shift, and go to state 8 "set_channels" shift, and go to state 9 "wait" shift, and go to state 10 "while" shift, and go to state 12 "identifier" shift, and go to state 13 "in_port" shift, and go to state 14 "out_port" shift, and go to state 15 $default reduce using rule 7 (main_block) statement go to state 73 array_assignment go to state 22 assignment go to state 23 clear_statement go to state 24 continue_statement go to state 25 exit_statement go to state 26 for_statement go to state 27 if_statement go to state 28 procedure_call go to state 29 reset_statement go to state 30 wait_statement go to state 31 while_statement go to state 32

### State 21

10 one_or_more_statements → statement • $default reduce using rule 10 (one_or_more_statements)

### State 22

12 statement → array_assignment • $default reduce using rule 12 (statement)

### State 23

13 statement → assignment • $default reduce using rule 13 (statement)

### State 24

14 statement → clear_statement • $default reduce using rule 14 (statement)

### State 25

15 statement → continue_statement • $default reduce using rule 15 (statement)

### State 26

16 statement → exit_statement • $default reduce using rule 16 (statement)

### State 27

17 statement → for_statement • $default reduce using rule 17 (statement)

### State 28

18 statement → if_statement • $default reduce using rule 18 (statement)

### State 29

19 statement → procedure_call • $default reduce using rule 19 (statement)

### State 30

20 statement → reset_statement • $default reduce using rule 20 (statement)

### State 31

21 statement → wait_statement • $default reduce using rule 21 (statement)

### State 32

22 statement → while_statement • $default reduce using rule 22 (statement)

### State 33

5 block → "also" one_or_more_statements • "end" "also" 11 one_or_more_statements → one_or_more_statements • statement 12 statement → • array_assignment 13 | • assignment 14 | • clear_statement 15 | • continue_statement 16 | • exit_statement 17 | • for_statement 18 | • if_statement 19 | • procedure_call 20 | • reset_statement 21 | • wait_statement 22 | • while_statement 23 array_assignment → • "identifier" "[" exp "]" "=" exp 24 | • "identifier" "[" exp "]" "=" "{" expression_list "}" 25 | • "out_port" "[" exp "]" "=" exp 26 | • "identifier" "$" "[" exp "]" "=" exp 27 | • "identifier" "$" "[" exp "]" "=" string_exp 28 | • "identifier" "$" "[" exp "]" "=" "{" string_list "}" 29 assignment → • "identifier" "=" exp 30 | • "in_port" "=" exp 31 | • "out_port" "=" exp 32 | • "identifier" "$" "=" exp 33 | • "identifier" "$" "=" string_exp 34 clear_statement → • "clear" "all" 35 continue_statement → • "continue" "for" 36 | • "continue" "while" 37 | • "continue" "all" 38 exit_statement → • "exit" "for" 39 | • "exit" "while" 40 | • "exit" "all" 41 for_statement → • "for" assignment "to" exp zero_or_more_statements "next" 42 | • "for" assignment "to" exp "step" exp zero_or_more_statements "next" 43 | • "for" assignment "to" exp zero_or_more_statements "nexthighcpu" 44 | • "for" assignment "to" exp "step" exp zero_or_more_statements "nexthighcpu" 48 if_statement → • "if" exp "then" zero_or_more_statements elseif_group "end" "if" 49 | • "if" exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" 50 procedure_call → • "print" "(" "out_port" "," string_list ")" 51 | • "set_channels" "(" "out_port" "," exp ")" 52 reset_statement → • "reset" 53 wait_statement → • "wait" exp 54 while_statement → • "while" exp zero_or_more_statements "end" "while" "clear" shift, and go to state 2 "continue" shift, and go to state 3 "end" shift, and go to state 74 "exit" shift, and go to state 4 "for" shift, and go to state 5 "if" shift, and go to state 6 "print" shift, and go to state 7 "reset" shift, and go to state 8 "set_channels" shift, and go to state 9 "wait" shift, and go to state 10 "while" shift, and go to state 12 "identifier" shift, and go to state 13 "in_port" shift, and go to state 14 "out_port" shift, and go to state 15 statement go to state 73 array_assignment go to state 22 assignment go to state 23 clear_statement go to state 24 continue_statement go to state 25 exit_statement go to state 26 for_statement go to state 27 if_statement go to state 28 procedure_call go to state 29 reset_statement go to state 30 wait_statement go to state 31 while_statement go to state 32

### State 34

34 clear_statement → "clear" "all" • $default reduce using rule 34 (clear_statement)

### State 35

37 continue_statement → "continue" "all" • $default reduce using rule 37 (continue_statement)

### State 36

35 continue_statement → "continue" "for" • $default reduce using rule 35 (continue_statement)

### State 37

36 continue_statement → "continue" "while" • $default reduce using rule 36 (continue_statement)

### State 38

40 exit_statement → "exit" "all" • $default reduce using rule 40 (exit_statement)

### State 39

38 exit_statement → "exit" "for" • $default reduce using rule 38 (exit_statement)

### State 40

39 exit_statement → "exit" "while" • $default reduce using rule 39 (exit_statement)

### State 41

29 assignment → "identifier" • "=" exp 32 | "identifier" • "$" "=" exp 33 | "identifier" • "$" "=" string_exp "=" shift, and go to state 64 "$" shift, and go to state 75

### State 42

31 assignment → "out_port" • "=" exp "=" shift, and go to state 68

### State 43

41 for_statement → "for" assignment • "to" exp zero_or_more_statements "next" 42 | "for" assignment • "to" exp "step" exp zero_or_more_statements "next" 43 | "for" assignment • "to" exp zero_or_more_statements "nexthighcpu" 44 | "for" assignment • "to" exp "step" exp zero_or_more_statements "nexthighcpu" "to" shift, and go to state 76

### State 44

75 exp → "channels" • "(" "in_port" ")" "(" shift, and go to state 77

### State 45

76 exp → "connected" • "(" "in_port" ")" 77 | "connected" • "(" "out_port" ")" "(" shift, and go to state 78

### State 46

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 60 | "not" • exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 79

### State 47

78 exp → "trigger" • "(" "in_port" ")" "(" shift, and go to state 80

### State 48

59 exp → "-" • "number" "number" shift, and go to state 81

### State 49

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" 82 | "(" • exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 82

### State 50

65 exp → "identifier" • [$end, "also", "and", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "or", "print", "reset", "set_channels", "step", "then", "to", "wait", "when", "while", "-", "+", "*", "/", ")", "}", "]", ",", "?", ":", "identifier", "in_port", "out_port", "comparison"] 66 | "identifier" • "[" exp "]" "[" shift, and go to state 83 $default reduce using rule 65 (exp)

### State 51

57 exp → "number" • $default reduce using rule 57 (exp)

### State 52

58 exp → "note" • $default reduce using rule 58 (exp)

### State 53

61 exp → "in_port" • [$end, "also", "and", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "or", "print", "reset", "set_channels", "step", "then", "to", "wait", "when", "while", "-", "+", "*", "/", ")", "}", "]", ",", "?", ":", "identifier", "in_port", "out_port", "comparison"] 62 | "in_port" • "[" exp "]" "[" shift, and go to state 84 $default reduce using rule 61 (exp)

### State 54

63 exp → "out_port" • [$end, "also", "and", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "or", "print", "reset", "set_channels", "step", "then", "to", "wait", "when", "while", "-", "+", "*", "/", ")", "}", "]", ",", "?", ":", "identifier", "in_port", "out_port", "comparison"] 64 | "out_port" • "[" exp "]" "[" shift, and go to state 85 $default reduce using rule 63 (exp)

### State 55

74 exp → "zeroargfunc" • "(" ")" "(" shift, and go to state 86

### State 56

79 exp → "oneargfunc" • "(" exp ")" "(" shift, and go to state 87

### State 57

80 exp → "twoargfunc" • "(" exp "," exp ")" "(" shift, and go to state 88

### State 58

48 if_statement → "if" exp • "then" zero_or_more_statements elseif_group "end" "if" 49 | "if" exp • "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "then" shift, and go to state 91 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 59

50 procedure_call → "print" "(" • "out_port" "," string_list ")" "out_port" shift, and go to state 98

### State 60

51 procedure_call → "set_channels" "(" • "out_port" "," exp ")" "out_port" shift, and go to state 99

### State 61

53 wait_statement → "wait" exp • [$end, "also", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "print", "reset", "set_channels", "wait", "when", "while", "identifier", "in_port", "out_port"] 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97 $default reduce using rule 53 (wait_statement)

### State 62

6 block → "when" exp • one_or_more_statements "end" "when" 10 one_or_more_statements → • statement 11 | • one_or_more_statements statement 12 statement → • array_assignment 13 | • assignment 14 | • clear_statement 15 | • continue_statement 16 | • exit_statement 17 | • for_statement 18 | • if_statement 19 | • procedure_call 20 | • reset_statement 21 | • wait_statement 22 | • while_statement 23 array_assignment → • "identifier" "[" exp "]" "=" exp 24 | • "identifier" "[" exp "]" "=" "{" expression_list "}" 25 | • "out_port" "[" exp "]" "=" exp 26 | • "identifier" "$" "[" exp "]" "=" exp 27 | • "identifier" "$" "[" exp "]" "=" string_exp 28 | • "identifier" "$" "[" exp "]" "=" "{" string_list "}" 29 assignment → • "identifier" "=" exp 30 | • "in_port" "=" exp 31 | • "out_port" "=" exp 32 | • "identifier" "$" "=" exp 33 | • "identifier" "$" "=" string_exp 34 clear_statement → • "clear" "all" 35 continue_statement → • "continue" "for" 36 | • "continue" "while" 37 | • "continue" "all" 38 exit_statement → • "exit" "for" 39 | • "exit" "while" 40 | • "exit" "all" 41 for_statement → • "for" assignment "to" exp zero_or_more_statements "next" 42 | • "for" assignment "to" exp "step" exp zero_or_more_statements "next" 43 | • "for" assignment "to" exp zero_or_more_statements "nexthighcpu" 44 | • "for" assignment "to" exp "step" exp zero_or_more_statements "nexthighcpu" 48 if_statement → • "if" exp "then" zero_or_more_statements elseif_group "end" "if" 49 | • "if" exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" 50 procedure_call → • "print" "(" "out_port" "," string_list ")" 51 | • "set_channels" "(" "out_port" "," exp ")" 52 reset_statement → • "reset" 53 wait_statement → • "wait" exp 54 while_statement → • "while" exp zero_or_more_statements "end" "while" 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "clear" shift, and go to state 2 "continue" shift, and go to state 3 "exit" shift, and go to state 4 "for" shift, and go to state 5 "if" shift, and go to state 6 "or" shift, and go to state 90 "print" shift, and go to state 7 "reset" shift, and go to state 8 "set_channels" shift, and go to state 9 "wait" shift, and go to state 10 "while" shift, and go to state 12 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "identifier" shift, and go to state 13 "in_port" shift, and go to state 14 "out_port" shift, and go to state 15 "comparison" shift, and go to state 97 one_or_more_statements go to state 100 statement go to state 21 array_assignment go to state 22 assignment go to state 23 clear_statement go to state 24 continue_statement go to state 25 exit_statement go to state 26 for_statement go to state 27 if_statement go to state 28 procedure_call go to state 29 reset_statement go to state 30 wait_statement go to state 31 while_statement go to state 32

### State 63

8 zero_or_more_statements → • %empty ["clear", "continue", "end", "exit", "for", "if", "print", "reset", "set_channels", "wait", "while", "identifier", "in_port", "out_port"] 9 | • zero_or_more_statements statement 54 while_statement → "while" exp • zero_or_more_statements "end" "while" 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97 $default reduce using rule 8 (zero_or_more_statements) zero_or_more_statements go to state 101

### State 64

29 assignment → "identifier" "=" • exp 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 102

### State 65

23 array_assignment → "identifier" "[" • exp "]" "=" exp 24 | "identifier" "[" • exp "]" "=" "{" expression_list "}" 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 103

### State 66

26 array_assignment → "identifier" "$" • "[" exp "]" "=" exp 27 | "identifier" "$" • "[" exp "]" "=" string_exp 28 | "identifier" "$" • "[" exp "]" "=" "{" string_list "}" 32 assignment → "identifier" "$" • "=" exp 33 | "identifier" "$" • "=" string_exp "=" shift, and go to state 104 "[" shift, and go to state 105

### State 67

30 assignment → "in_port" "=" • exp 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 106

### State 68

31 assignment → "out_port" "=" • exp 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 107

### State 69

25 array_assignment → "out_port" "[" • exp "]" "=" exp 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 108

### State 70

0 $accept → program $end • $default accept

### State 71

1 program → blocks $end • $default reduce using rule 1 (program)

### State 72

4 blocks → blocks block • $default reduce using rule 4 (blocks)

### State 73

11 one_or_more_statements → one_or_more_statements statement • $default reduce using rule 11 (one_or_more_statements)

### State 74

5 block → "also" one_or_more_statements "end" • "also" "also" shift, and go to state 109

### State 75

32 assignment → "identifier" "$" • "=" exp 33 | "identifier" "$" • "=" string_exp "=" shift, and go to state 104

### State 76

41 for_statement → "for" assignment "to" • exp zero_or_more_statements "next" 42 | "for" assignment "to" • exp "step" exp zero_or_more_statements "next" 43 | "for" assignment "to" • exp zero_or_more_statements "nexthighcpu" 44 | "for" assignment "to" • exp "step" exp zero_or_more_statements "nexthighcpu" 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 110

### State 77

75 exp → "channels" "(" • "in_port" ")" "in_port" shift, and go to state 111

### State 78

76 exp → "connected" "(" • "in_port" ")" 77 | "connected" "(" • "out_port" ")" "in_port" shift, and go to state 112 "out_port" shift, and go to state 113

### State 79

60 exp → "not" exp • [$end, "also", "and", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "or", "print", "reset", "set_channels", "step", "then", "to", "wait", "when", "while", "-", "+", "*", "/", ")", "}", "]", ",", "?", ":", "identifier", "in_port", "out_port", "comparison"] 67 | exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp $default reduce using rule 60 (exp) Conflict between rule 60 and token "and" resolved as reduce ("and" < NEG). Conflict between rule 60 and token "or" resolved as reduce ("or" < NEG). Conflict between rule 60 and token "-" resolved as reduce ("-" < NEG). Conflict between rule 60 and token "+" resolved as reduce ("+" < NEG). Conflict between rule 60 and token "*" resolved as reduce ("*" < NEG). Conflict between rule 60 and token "/" resolved as reduce ("/" < NEG). Conflict between rule 60 and token "?" resolved as reduce ("?" < NEG). Conflict between rule 60 and token "comparison" resolved as reduce ("comparison" < NEG).

### State 80

78 exp → "trigger" "(" • "in_port" ")" "in_port" shift, and go to state 114

### State 81

59 exp → "-" "number" • $default reduce using rule 59 (exp)

### State 82

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp 82 | "(" exp • ")" "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 ")" shift, and go to state 115 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 83

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 66 | "identifier" "[" • exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 116

### State 84

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 62 | "in_port" "[" • exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 117

### State 85

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 64 | "out_port" "[" • exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 118

### State 86

74 exp → "zeroargfunc" "(" • ")" ")" shift, and go to state 119

### State 87

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 79 | "oneargfunc" "(" • exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 120

### State 88

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 80 | "twoargfunc" "(" • exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 121

### State 89

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 72 | exp "and" • exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 122

### State 90

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 73 | exp "or" • exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 123

### State 91

8 zero_or_more_statements → • %empty 9 | • zero_or_more_statements statement 48 if_statement → "if" exp "then" • zero_or_more_statements elseif_group "end" "if" 49 | "if" exp "then" • zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" $default reduce using rule 8 (zero_or_more_statements) zero_or_more_statements go to state 124

### State 92

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 68 | exp "-" • exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 125

### State 93

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 67 | exp "+" • exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 126

### State 94

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 69 | exp "*" • exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 127

### State 95

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 70 | exp "/" • exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 128

### State 96

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 81 | exp "?" • exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 129

### State 97

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 71 | exp "comparison" • exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 130

### State 98

50 procedure_call → "print" "(" "out_port" • "," string_list ")" "," shift, and go to state 131

### State 99

51 procedure_call → "set_channels" "(" "out_port" • "," exp ")" "," shift, and go to state 132

### State 100

6 block → "when" exp one_or_more_statements • "end" "when" 11 one_or_more_statements → one_or_more_statements • statement 12 statement → • array_assignment 13 | • assignment 14 | • clear_statement 15 | • continue_statement 16 | • exit_statement 17 | • for_statement 18 | • if_statement 19 | • procedure_call 20 | • reset_statement 21 | • wait_statement 22 | • while_statement 23 array_assignment → • "identifier" "[" exp "]" "=" exp 24 | • "identifier" "[" exp "]" "=" "{" expression_list "}" 25 | • "out_port" "[" exp "]" "=" exp 26 | • "identifier" "$" "[" exp "]" "=" exp 27 | • "identifier" "$" "[" exp "]" "=" string_exp 28 | • "identifier" "$" "[" exp "]" "=" "{" string_list "}" 29 assignment → • "identifier" "=" exp 30 | • "in_port" "=" exp 31 | • "out_port" "=" exp 32 | • "identifier" "$" "=" exp 33 | • "identifier" "$" "=" string_exp 34 clear_statement → • "clear" "all" 35 continue_statement → • "continue" "for" 36 | • "continue" "while" 37 | • "continue" "all" 38 exit_statement → • "exit" "for" 39 | • "exit" "while" 40 | • "exit" "all" 41 for_statement → • "for" assignment "to" exp zero_or_more_statements "next" 42 | • "for" assignment "to" exp "step" exp zero_or_more_statements "next" 43 | • "for" assignment "to" exp zero_or_more_statements "nexthighcpu" 44 | • "for" assignment "to" exp "step" exp zero_or_more_statements "nexthighcpu" 48 if_statement → • "if" exp "then" zero_or_more_statements elseif_group "end" "if" 49 | • "if" exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" 50 procedure_call → • "print" "(" "out_port" "," string_list ")" 51 | • "set_channels" "(" "out_port" "," exp ")" 52 reset_statement → • "reset" 53 wait_statement → • "wait" exp 54 while_statement → • "while" exp zero_or_more_statements "end" "while" "clear" shift, and go to state 2 "continue" shift, and go to state 3 "end" shift, and go to state 133 "exit" shift, and go to state 4 "for" shift, and go to state 5 "if" shift, and go to state 6 "print" shift, and go to state 7 "reset" shift, and go to state 8 "set_channels" shift, and go to state 9 "wait" shift, and go to state 10 "while" shift, and go to state 12 "identifier" shift, and go to state 13 "in_port" shift, and go to state 14 "out_port" shift, and go to state 15 statement go to state 73 array_assignment go to state 22 assignment go to state 23 clear_statement go to state 24 continue_statement go to state 25 exit_statement go to state 26 for_statement go to state 27 if_statement go to state 28 procedure_call go to state 29 reset_statement go to state 30 wait_statement go to state 31 while_statement go to state 32

### State 101

9 zero_or_more_statements → zero_or_more_statements • statement 12 statement → • array_assignment 13 | • assignment 14 | • clear_statement 15 | • continue_statement 16 | • exit_statement 17 | • for_statement 18 | • if_statement 19 | • procedure_call 20 | • reset_statement 21 | • wait_statement 22 | • while_statement 23 array_assignment → • "identifier" "[" exp "]" "=" exp 24 | • "identifier" "[" exp "]" "=" "{" expression_list "}" 25 | • "out_port" "[" exp "]" "=" exp 26 | • "identifier" "$" "[" exp "]" "=" exp 27 | • "identifier" "$" "[" exp "]" "=" string_exp 28 | • "identifier" "$" "[" exp "]" "=" "{" string_list "}" 29 assignment → • "identifier" "=" exp 30 | • "in_port" "=" exp 31 | • "out_port" "=" exp 32 | • "identifier" "$" "=" exp 33 | • "identifier" "$" "=" string_exp 34 clear_statement → • "clear" "all" 35 continue_statement → • "continue" "for" 36 | • "continue" "while" 37 | • "continue" "all" 38 exit_statement → • "exit" "for" 39 | • "exit" "while" 40 | • "exit" "all" 41 for_statement → • "for" assignment "to" exp zero_or_more_statements "next" 42 | • "for" assignment "to" exp "step" exp zero_or_more_statements "next" 43 | • "for" assignment "to" exp zero_or_more_statements "nexthighcpu" 44 | • "for" assignment "to" exp "step" exp zero_or_more_statements "nexthighcpu" 48 if_statement → • "if" exp "then" zero_or_more_statements elseif_group "end" "if" 49 | • "if" exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" 50 procedure_call → • "print" "(" "out_port" "," string_list ")" 51 | • "set_channels" "(" "out_port" "," exp ")" 52 reset_statement → • "reset" 53 wait_statement → • "wait" exp 54 while_statement → • "while" exp zero_or_more_statements "end" "while" 54 | "while" exp zero_or_more_statements • "end" "while" "clear" shift, and go to state 2 "continue" shift, and go to state 3 "end" shift, and go to state 134 "exit" shift, and go to state 4 "for" shift, and go to state 5 "if" shift, and go to state 6 "print" shift, and go to state 7 "reset" shift, and go to state 8 "set_channels" shift, and go to state 9 "wait" shift, and go to state 10 "while" shift, and go to state 12 "identifier" shift, and go to state 13 "in_port" shift, and go to state 14 "out_port" shift, and go to state 15 statement go to state 135 array_assignment go to state 22 assignment go to state 23 clear_statement go to state 24 continue_statement go to state 25 exit_statement go to state 26 for_statement go to state 27 if_statement go to state 28 procedure_call go to state 29 reset_statement go to state 30 wait_statement go to state 31 while_statement go to state 32

### State 102

29 assignment → "identifier" "=" exp • [$end, "also", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "print", "reset", "set_channels", "to", "wait", "when", "while", "identifier", "in_port", "out_port"] 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97 $default reduce using rule 29 (assignment)

### State 103

23 array_assignment → "identifier" "[" exp • "]" "=" exp 24 | "identifier" "[" exp • "]" "=" "{" expression_list "}" 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "]" shift, and go to state 136 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 104

32 assignment → "identifier" "$" "=" • exp 33 | "identifier" "$" "=" • string_exp 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" 87 string_exp → • "quoted_string" 88 | • "identifier" "$" 89 | • "identifier" "$" "[" exp "]" 90 | • "debug" "(" "identifier" ")" 91 | • "debug" "(" "identifier" "$" ")" 92 | • "debug" "(" "identifier" "[" "]" "," exp "," exp ")" 93 | • "debug" "(" "identifier" "$" "[" "]" "," exp "," exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "debug" shift, and go to state 137 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 138 "quoted_string" shift, and go to state 139 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 140 string_exp go to state 141

### State 105

26 array_assignment → "identifier" "$" "[" • exp "]" "=" exp 27 | "identifier" "$" "[" • exp "]" "=" string_exp 28 | "identifier" "$" "[" • exp "]" "=" "{" string_list "}" 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 142

### State 106

30 assignment → "in_port" "=" exp • [$end, "also", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "print", "reset", "set_channels", "to", "wait", "when", "while", "identifier", "in_port", "out_port"] 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97 $default reduce using rule 30 (assignment)

### State 107

31 assignment → "out_port" "=" exp • [$end, "also", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "print", "reset", "set_channels", "to", "wait", "when", "while", "identifier", "in_port", "out_port"] 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97 $default reduce using rule 31 (assignment)

### State 108

25 array_assignment → "out_port" "[" exp • "]" "=" exp 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "]" shift, and go to state 143 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 109

5 block → "also" one_or_more_statements "end" "also" • $default reduce using rule 5 (block)

### State 110

8 zero_or_more_statements → • %empty ["clear", "continue", "exit", "for", "if", "next", "nexthighcpu", "print", "reset", "set_channels", "wait", "while", "identifier", "in_port", "out_port"] 9 | • zero_or_more_statements statement 41 for_statement → "for" assignment "to" exp • zero_or_more_statements "next" 42 | "for" assignment "to" exp • "step" exp zero_or_more_statements "next" 43 | "for" assignment "to" exp • zero_or_more_statements "nexthighcpu" 44 | "for" assignment "to" exp • "step" exp zero_or_more_statements "nexthighcpu" 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "step" shift, and go to state 144 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97 $default reduce using rule 8 (zero_or_more_statements) zero_or_more_statements go to state 145

### State 111

75 exp → "channels" "(" "in_port" • ")" ")" shift, and go to state 146

### State 112

76 exp → "connected" "(" "in_port" • ")" ")" shift, and go to state 147

### State 113

77 exp → "connected" "(" "out_port" • ")" ")" shift, and go to state 148

### State 114

78 exp → "trigger" "(" "in_port" • ")" ")" shift, and go to state 149

### State 115

82 exp → "(" exp ")" • $default reduce using rule 82 (exp)

### State 116

66 exp → "identifier" "[" exp • "]" 67 | exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "]" shift, and go to state 150 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 117

62 exp → "in_port" "[" exp • "]" 67 | exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "]" shift, and go to state 151 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 118

64 exp → "out_port" "[" exp • "]" 67 | exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "]" shift, and go to state 152 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 119

74 exp → "zeroargfunc" "(" ")" • $default reduce using rule 74 (exp)

### State 120

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 79 | "oneargfunc" "(" exp • ")" 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 ")" shift, and go to state 153 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 121

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 80 | "twoargfunc" "(" exp • "," exp ")" 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "," shift, and go to state 154 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 122

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 72 | exp "and" exp • [$end, "also", "and", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "or", "print", "reset", "set_channels", "step", "then", "to", "wait", "when", "while", ")", "}", "]", ",", "?", ":", "identifier", "in_port", "out_port"] 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "comparison" shift, and go to state 97 $default reduce using rule 72 (exp) Conflict between rule 72 and token "and" resolved as reduce (%left "and"). Conflict between rule 72 and token "or" resolved as reduce ("or" < "and"). Conflict between rule 72 and token "-" resolved as shift ("and" < "-"). Conflict between rule 72 and token "+" resolved as shift ("and" < "+"). Conflict between rule 72 and token "*" resolved as shift ("and" < "*"). Conflict between rule 72 and token "/" resolved as shift ("and" < "/"). Conflict between rule 72 and token "?" resolved as reduce ("?" < "and"). Conflict between rule 72 and token "comparison" resolved as shift ("and" < "comparison").

### State 123

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 73 | exp "or" exp • [$end, "also", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "or", "print", "reset", "set_channels", "step", "then", "to", "wait", "when", "while", ")", "}", "]", ",", "?", ":", "identifier", "in_port", "out_port"] 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "comparison" shift, and go to state 97 $default reduce using rule 73 (exp) Conflict between rule 73 and token "and" resolved as shift ("or" < "and"). Conflict between rule 73 and token "or" resolved as reduce (%left "or"). Conflict between rule 73 and token "-" resolved as shift ("or" < "-"). Conflict between rule 73 and token "+" resolved as shift ("or" < "+"). Conflict between rule 73 and token "*" resolved as shift ("or" < "*"). Conflict between rule 73 and token "/" resolved as shift ("or" < "/"). Conflict between rule 73 and token "?" resolved as reduce ("?" < "or"). Conflict between rule 73 and token "comparison" resolved as shift ("or" < "comparison").

### State 124

9 zero_or_more_statements → zero_or_more_statements • statement 12 statement → • array_assignment 13 | • assignment 14 | • clear_statement 15 | • continue_statement 16 | • exit_statement 17 | • for_statement 18 | • if_statement 19 | • procedure_call 20 | • reset_statement 21 | • wait_statement 22 | • while_statement 23 array_assignment → • "identifier" "[" exp "]" "=" exp 24 | • "identifier" "[" exp "]" "=" "{" expression_list "}" 25 | • "out_port" "[" exp "]" "=" exp 26 | • "identifier" "$" "[" exp "]" "=" exp 27 | • "identifier" "$" "[" exp "]" "=" string_exp 28 | • "identifier" "$" "[" exp "]" "=" "{" string_list "}" 29 assignment → • "identifier" "=" exp 30 | • "in_port" "=" exp 31 | • "out_port" "=" exp 32 | • "identifier" "$" "=" exp 33 | • "identifier" "$" "=" string_exp 34 clear_statement → • "clear" "all" 35 continue_statement → • "continue" "for" 36 | • "continue" "while" 37 | • "continue" "all" 38 exit_statement → • "exit" "for" 39 | • "exit" "while" 40 | • "exit" "all" 41 for_statement → • "for" assignment "to" exp zero_or_more_statements "next" 42 | • "for" assignment "to" exp "step" exp zero_or_more_statements "next" 43 | • "for" assignment "to" exp zero_or_more_statements "nexthighcpu" 44 | • "for" assignment "to" exp "step" exp zero_or_more_statements "nexthighcpu" 45 elseif_group → • %empty ["else", "elseif", "end"] 46 | • elseif_group elseif_clause 48 if_statement → • "if" exp "then" zero_or_more_statements elseif_group "end" "if" 48 | "if" exp "then" zero_or_more_statements • elseif_group "end" "if" 49 | • "if" exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" 49 | "if" exp "then" zero_or_more_statements • elseif_group "else" zero_or_more_statements "end" "if" 50 procedure_call → • "print" "(" "out_port" "," string_list ")" 51 | • "set_channels" "(" "out_port" "," exp ")" 52 reset_statement → • "reset" 53 wait_statement → • "wait" exp 54 while_statement → • "while" exp zero_or_more_statements "end" "while" "clear" shift, and go to state 2 "continue" shift, and go to state 3 "exit" shift, and go to state 4 "for" shift, and go to state 5 "if" shift, and go to state 6 "print" shift, and go to state 7 "reset" shift, and go to state 8 "set_channels" shift, and go to state 9 "wait" shift, and go to state 10 "while" shift, and go to state 12 "identifier" shift, and go to state 13 "in_port" shift, and go to state 14 "out_port" shift, and go to state 15 $default reduce using rule 45 (elseif_group) statement go to state 135 array_assignment go to state 22 assignment go to state 23 clear_statement go to state 24 continue_statement go to state 25 exit_statement go to state 26 for_statement go to state 27 elseif_group go to state 155 if_statement go to state 28 procedure_call go to state 29 reset_statement go to state 30 wait_statement go to state 31 while_statement go to state 32

### State 125

67 exp → exp • "+" exp 68 | exp • "-" exp 68 | exp "-" exp • [$end, "also", "and", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "or", "print", "reset", "set_channels", "step", "then", "to", "wait", "when", "while", "-", "+", ")", "}", "]", ",", "?", ":", "identifier", "in_port", "out_port", "comparison"] 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "*" shift, and go to state 94 "/" shift, and go to state 95 $default reduce using rule 68 (exp) Conflict between rule 68 and token "and" resolved as reduce ("and" < "-"). Conflict between rule 68 and token "or" resolved as reduce ("or" < "-"). Conflict between rule 68 and token "-" resolved as reduce (%left "-"). Conflict between rule 68 and token "+" resolved as reduce (%left "+"). Conflict between rule 68 and token "*" resolved as shift ("-" < "*"). Conflict between rule 68 and token "/" resolved as shift ("-" < "/"). Conflict between rule 68 and token "?" resolved as reduce ("?" < "-"). Conflict between rule 68 and token "comparison" resolved as reduce ("comparison" < "-").

### State 126

67 exp → exp • "+" exp 67 | exp "+" exp • [$end, "also", "and", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "or", "print", "reset", "set_channels", "step", "then", "to", "wait", "when", "while", "-", "+", ")", "}", "]", ",", "?", ":", "identifier", "in_port", "out_port", "comparison"] 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "*" shift, and go to state 94 "/" shift, and go to state 95 $default reduce using rule 67 (exp) Conflict between rule 67 and token "and" resolved as reduce ("and" < "+"). Conflict between rule 67 and token "or" resolved as reduce ("or" < "+"). Conflict between rule 67 and token "-" resolved as reduce (%left "-"). Conflict between rule 67 and token "+" resolved as reduce (%left "+"). Conflict between rule 67 and token "*" resolved as shift ("+" < "*"). Conflict between rule 67 and token "/" resolved as shift ("+" < "/"). Conflict between rule 67 and token "?" resolved as reduce ("?" < "+"). Conflict between rule 67 and token "comparison" resolved as reduce ("comparison" < "+").

### State 127

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 69 | exp "*" exp • [$end, "also", "and", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "or", "print", "reset", "set_channels", "step", "then", "to", "wait", "when", "while", "-", "+", "*", "/", ")", "}", "]", ",", "?", ":", "identifier", "in_port", "out_port", "comparison"] 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp $default reduce using rule 69 (exp) Conflict between rule 69 and token "and" resolved as reduce ("and" < "*"). Conflict between rule 69 and token "or" resolved as reduce ("or" < "*"). Conflict between rule 69 and token "-" resolved as reduce ("-" < "*"). Conflict between rule 69 and token "+" resolved as reduce ("+" < "*"). Conflict between rule 69 and token "*" resolved as reduce (%left "*"). Conflict between rule 69 and token "/" resolved as reduce (%left "/"). Conflict between rule 69 and token "?" resolved as reduce ("?" < "*"). Conflict between rule 69 and token "comparison" resolved as reduce ("comparison" < "*").

### State 128

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 70 | exp "/" exp • [$end, "also", "and", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "or", "print", "reset", "set_channels", "step", "then", "to", "wait", "when", "while", "-", "+", "*", "/", ")", "}", "]", ",", "?", ":", "identifier", "in_port", "out_port", "comparison"] 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp $default reduce using rule 70 (exp) Conflict between rule 70 and token "and" resolved as reduce ("and" < "/"). Conflict between rule 70 and token "or" resolved as reduce ("or" < "/"). Conflict between rule 70 and token "-" resolved as reduce ("-" < "/"). Conflict between rule 70 and token "+" resolved as reduce ("+" < "/"). Conflict between rule 70 and token "*" resolved as reduce (%left "*"). Conflict between rule 70 and token "/" resolved as reduce (%left "/"). Conflict between rule 70 and token "?" resolved as reduce ("?" < "/"). Conflict between rule 70 and token "comparison" resolved as reduce ("comparison" < "/").

### State 129

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp 81 | exp "?" exp • ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 ":" shift, and go to state 156 "comparison" shift, and go to state 97

### State 130

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 71 | exp "comparison" exp • [$end, "also", "and", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "or", "print", "reset", "set_channels", "step", "then", "to", "wait", "when", "while", ")", "}", "]", ",", "?", ":", "identifier", "in_port", "out_port", "comparison"] 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 $default reduce using rule 71 (exp) Conflict between rule 71 and token "and" resolved as reduce ("and" < "comparison"). Conflict between rule 71 and token "or" resolved as reduce ("or" < "comparison"). Conflict between rule 71 and token "-" resolved as shift ("comparison" < "-"). Conflict between rule 71 and token "+" resolved as shift ("comparison" < "+"). Conflict between rule 71 and token "*" resolved as shift ("comparison" < "*"). Conflict between rule 71 and token "/" resolved as shift ("comparison" < "/"). Conflict between rule 71 and token "?" resolved as reduce ("?" < "comparison"). Conflict between rule 71 and token "comparison" resolved as reduce (%left "comparison").

### State 131

50 procedure_call → "print" "(" "out_port" "," • string_list ")" 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" 83 string_list → • string_exp 84 | • exp 85 | • string_list "," string_exp 86 | • string_list "," exp 87 string_exp → • "quoted_string" 88 | • "identifier" "$" 89 | • "identifier" "$" "[" exp "]" 90 | • "debug" "(" "identifier" ")" 91 | • "debug" "(" "identifier" "$" ")" 92 | • "debug" "(" "identifier" "[" "]" "," exp "," exp ")" 93 | • "debug" "(" "identifier" "$" "[" "]" "," exp "," exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "debug" shift, and go to state 137 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 138 "quoted_string" shift, and go to state 139 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 157 string_list go to state 158 string_exp go to state 159

### State 132

51 procedure_call → "set_channels" "(" "out_port" "," • exp ")" 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 160

### State 133

6 block → "when" exp one_or_more_statements "end" • "when" "when" shift, and go to state 161

### State 134

54 while_statement → "while" exp zero_or_more_statements "end" • "while" "while" shift, and go to state 162

### State 135

9 zero_or_more_statements → zero_or_more_statements statement • $default reduce using rule 9 (zero_or_more_statements)

### State 136

23 array_assignment → "identifier" "[" exp "]" • "=" exp 24 | "identifier" "[" exp "]" • "=" "{" expression_list "}" "=" shift, and go to state 163

### State 137

90 string_exp → "debug" • "(" "identifier" ")" 91 | "debug" • "(" "identifier" "$" ")" 92 | "debug" • "(" "identifier" "[" "]" "," exp "," exp ")" 93 | "debug" • "(" "identifier" "$" "[" "]" "," exp "," exp ")" "(" shift, and go to state 164

### State 138

65 exp → "identifier" • [$end, "also", "and", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "or", "print", "reset", "set_channels", "to", "wait", "when", "while", "-", "+", "*", "/", ")", "}", ",", "?", "identifier", "in_port", "out_port", "comparison"] 66 | "identifier" • "[" exp "]" 88 string_exp → "identifier" • "$" 89 | "identifier" • "$" "[" exp "]" "[" shift, and go to state 83 "$" shift, and go to state 165 $default reduce using rule 65 (exp)

### State 139

87 string_exp → "quoted_string" • $default reduce using rule 87 (string_exp)

### State 140

32 assignment → "identifier" "$" "=" exp • [$end, "also", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "print", "reset", "set_channels", "to", "wait", "when", "while", "identifier", "in_port", "out_port"] 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97 $default reduce using rule 32 (assignment)

### State 141

33 assignment → "identifier" "$" "=" string_exp • $default reduce using rule 33 (assignment)

### State 142

26 array_assignment → "identifier" "$" "[" exp • "]" "=" exp 27 | "identifier" "$" "[" exp • "]" "=" string_exp 28 | "identifier" "$" "[" exp • "]" "=" "{" string_list "}" 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "]" shift, and go to state 166 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 143

25 array_assignment → "out_port" "[" exp "]" • "=" exp "=" shift, and go to state 167

### State 144

42 for_statement → "for" assignment "to" exp "step" • exp zero_or_more_statements "next" 44 | "for" assignment "to" exp "step" • exp zero_or_more_statements "nexthighcpu" 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 168

### State 145

9 zero_or_more_statements → zero_or_more_statements • statement 12 statement → • array_assignment 13 | • assignment 14 | • clear_statement 15 | • continue_statement 16 | • exit_statement 17 | • for_statement 18 | • if_statement 19 | • procedure_call 20 | • reset_statement 21 | • wait_statement 22 | • while_statement 23 array_assignment → • "identifier" "[" exp "]" "=" exp 24 | • "identifier" "[" exp "]" "=" "{" expression_list "}" 25 | • "out_port" "[" exp "]" "=" exp 26 | • "identifier" "$" "[" exp "]" "=" exp 27 | • "identifier" "$" "[" exp "]" "=" string_exp 28 | • "identifier" "$" "[" exp "]" "=" "{" string_list "}" 29 assignment → • "identifier" "=" exp 30 | • "in_port" "=" exp 31 | • "out_port" "=" exp 32 | • "identifier" "$" "=" exp 33 | • "identifier" "$" "=" string_exp 34 clear_statement → • "clear" "all" 35 continue_statement → • "continue" "for" 36 | • "continue" "while" 37 | • "continue" "all" 38 exit_statement → • "exit" "for" 39 | • "exit" "while" 40 | • "exit" "all" 41 for_statement → • "for" assignment "to" exp zero_or_more_statements "next" 41 | "for" assignment "to" exp zero_or_more_statements • "next" 42 | • "for" assignment "to" exp "step" exp zero_or_more_statements "next" 43 | • "for" assignment "to" exp zero_or_more_statements "nexthighcpu" 43 | "for" assignment "to" exp zero_or_more_statements • "nexthighcpu" 44 | • "for" assignment "to" exp "step" exp zero_or_more_statements "nexthighcpu" 48 if_statement → • "if" exp "then" zero_or_more_statements elseif_group "end" "if" 49 | • "if" exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" 50 procedure_call → • "print" "(" "out_port" "," string_list ")" 51 | • "set_channels" "(" "out_port" "," exp ")" 52 reset_statement → • "reset" 53 wait_statement → • "wait" exp 54 while_statement → • "while" exp zero_or_more_statements "end" "while" "clear" shift, and go to state 2 "continue" shift, and go to state 3 "exit" shift, and go to state 4 "for" shift, and go to state 5 "if" shift, and go to state 6 "next" shift, and go to state 169 "nexthighcpu" shift, and go to state 170 "print" shift, and go to state 7 "reset" shift, and go to state 8 "set_channels" shift, and go to state 9 "wait" shift, and go to state 10 "while" shift, and go to state 12 "identifier" shift, and go to state 13 "in_port" shift, and go to state 14 "out_port" shift, and go to state 15 statement go to state 135 array_assignment go to state 22 assignment go to state 23 clear_statement go to state 24 continue_statement go to state 25 exit_statement go to state 26 for_statement go to state 27 if_statement go to state 28 procedure_call go to state 29 reset_statement go to state 30 wait_statement go to state 31 while_statement go to state 32

### State 146

75 exp → "channels" "(" "in_port" ")" • $default reduce using rule 75 (exp)

### State 147

76 exp → "connected" "(" "in_port" ")" • $default reduce using rule 76 (exp)

### State 148

77 exp → "connected" "(" "out_port" ")" • $default reduce using rule 77 (exp)

### State 149

78 exp → "trigger" "(" "in_port" ")" • $default reduce using rule 78 (exp)

### State 150

66 exp → "identifier" "[" exp "]" • $default reduce using rule 66 (exp)

### State 151

62 exp → "in_port" "[" exp "]" • $default reduce using rule 62 (exp)

### State 152

64 exp → "out_port" "[" exp "]" • $default reduce using rule 64 (exp)

### State 153

79 exp → "oneargfunc" "(" exp ")" • $default reduce using rule 79 (exp)

### State 154

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 80 | "twoargfunc" "(" exp "," • exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 171

### State 155

46 elseif_group → elseif_group • elseif_clause 47 elseif_clause → • "elseif" exp "then" zero_or_more_statements 48 if_statement → "if" exp "then" zero_or_more_statements elseif_group • "end" "if" 49 | "if" exp "then" zero_or_more_statements elseif_group • "else" zero_or_more_statements "end" "if" "else" shift, and go to state 172 "elseif" shift, and go to state 173 "end" shift, and go to state 174 elseif_clause go to state 175

### State 156

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 81 | exp "?" exp ":" • exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 176

### State 157

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp 84 string_list → exp • [")", "}", ","] "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97 $default reduce using rule 84 (string_list)

### State 158

50 procedure_call → "print" "(" "out_port" "," string_list • ")" 85 string_list → string_list • "," string_exp 86 | string_list • "," exp ")" shift, and go to state 177 "," shift, and go to state 178

### State 159

83 string_list → string_exp • $default reduce using rule 83 (string_list)

### State 160

51 procedure_call → "set_channels" "(" "out_port" "," exp • ")" 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 ")" shift, and go to state 179 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 161

6 block → "when" exp one_or_more_statements "end" "when" • $default reduce using rule 6 (block)

### State 162

54 while_statement → "while" exp zero_or_more_statements "end" "while" • $default reduce using rule 54 (while_statement)

### State 163

23 array_assignment → "identifier" "[" exp "]" "=" • exp 24 | "identifier" "[" exp "]" "=" • "{" expression_list "}" 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "{" shift, and go to state 180 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 181

### State 164

90 string_exp → "debug" "(" • "identifier" ")" 91 | "debug" "(" • "identifier" "$" ")" 92 | "debug" "(" • "identifier" "[" "]" "," exp "," exp ")" 93 | "debug" "(" • "identifier" "$" "[" "]" "," exp "," exp ")" "identifier" shift, and go to state 182

### State 165

88 string_exp → "identifier" "$" • [$end, "also", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "print", "reset", "set_channels", "to", "wait", "when", "while", ")", "}", ",", "identifier", "in_port", "out_port"] 89 | "identifier" "$" • "[" exp "]" "[" shift, and go to state 183 $default reduce using rule 88 (string_exp)

### State 166

26 array_assignment → "identifier" "$" "[" exp "]" • "=" exp 27 | "identifier" "$" "[" exp "]" • "=" string_exp 28 | "identifier" "$" "[" exp "]" • "=" "{" string_list "}" "=" shift, and go to state 184

### State 167

25 array_assignment → "out_port" "[" exp "]" "=" • exp 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 185

### State 168

8 zero_or_more_statements → • %empty ["clear", "continue", "exit", "for", "if", "next", "nexthighcpu", "print", "reset", "set_channels", "wait", "while", "identifier", "in_port", "out_port"] 9 | • zero_or_more_statements statement 42 for_statement → "for" assignment "to" exp "step" exp • zero_or_more_statements "next" 44 | "for" assignment "to" exp "step" exp • zero_or_more_statements "nexthighcpu" 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97 $default reduce using rule 8 (zero_or_more_statements) zero_or_more_statements go to state 186

### State 169

41 for_statement → "for" assignment "to" exp zero_or_more_statements "next" • $default reduce using rule 41 (for_statement)

### State 170

43 for_statement → "for" assignment "to" exp zero_or_more_statements "nexthighcpu" • $default reduce using rule 43 (for_statement)

### State 171

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 80 | "twoargfunc" "(" exp "," exp • ")" 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 ")" shift, and go to state 187 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 172

8 zero_or_more_statements → • %empty 9 | • zero_or_more_statements statement 49 if_statement → "if" exp "then" zero_or_more_statements elseif_group "else" • zero_or_more_statements "end" "if" $default reduce using rule 8 (zero_or_more_statements) zero_or_more_statements go to state 188

### State 173

47 elseif_clause → "elseif" • exp "then" zero_or_more_statements 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 189

### State 174

48 if_statement → "if" exp "then" zero_or_more_statements elseif_group "end" • "if" "if" shift, and go to state 190

### State 175

46 elseif_group → elseif_group elseif_clause • $default reduce using rule 46 (elseif_group)

### State 176

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp 81 | exp "?" exp ":" exp • [$end, "also", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "print", "reset", "set_channels", "step", "then", "to", "wait", "when", "while", ")", "}", "]", ",", ":", "identifier", "in_port", "out_port"] "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97 $default reduce using rule 81 (exp) Conflict between rule 81 and token "and" resolved as shift (":" < "and"). Conflict between rule 81 and token "or" resolved as shift (":" < "or"). Conflict between rule 81 and token "-" resolved as shift (":" < "-"). Conflict between rule 81 and token "+" resolved as shift (":" < "+"). Conflict between rule 81 and token "*" resolved as shift (":" < "*"). Conflict between rule 81 and token "/" resolved as shift (":" < "/"). Conflict between rule 81 and token "?" resolved as shift (%right "?"). Conflict between rule 81 and token "comparison" resolved as shift (":" < "comparison").

### State 177

50 procedure_call → "print" "(" "out_port" "," string_list ")" • $default reduce using rule 50 (procedure_call)

### State 178

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" 85 string_list → string_list "," • string_exp 86 | string_list "," • exp 87 string_exp → • "quoted_string" 88 | • "identifier" "$" 89 | • "identifier" "$" "[" exp "]" 90 | • "debug" "(" "identifier" ")" 91 | • "debug" "(" "identifier" "$" ")" 92 | • "debug" "(" "identifier" "[" "]" "," exp "," exp ")" 93 | • "debug" "(" "identifier" "$" "[" "]" "," exp "," exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "debug" shift, and go to state 137 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 138 "quoted_string" shift, and go to state 139 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 191 string_exp go to state 192

### State 179

51 procedure_call → "set_channels" "(" "out_port" "," exp ")" • $default reduce using rule 51 (procedure_call)

### State 180

24 array_assignment → "identifier" "[" exp "]" "=" "{" • expression_list "}" 55 expression_list → • exp 56 | • expression_list "," exp 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 expression_list go to state 193 exp go to state 194

### State 181

23 array_assignment → "identifier" "[" exp "]" "=" exp • [$end, "also", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "print", "reset", "set_channels", "wait", "when", "while", "identifier", "in_port", "out_port"] 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97 $default reduce using rule 23 (array_assignment)

### State 182

90 string_exp → "debug" "(" "identifier" • ")" 91 | "debug" "(" "identifier" • "$" ")" 92 | "debug" "(" "identifier" • "[" "]" "," exp "," exp ")" 93 | "debug" "(" "identifier" • "$" "[" "]" "," exp "," exp ")" ")" shift, and go to state 195 "[" shift, and go to state 196 "$" shift, and go to state 197

### State 183

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" 89 string_exp → "identifier" "$" "[" • exp "]" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 198

### State 184

26 array_assignment → "identifier" "$" "[" exp "]" "=" • exp 27 | "identifier" "$" "[" exp "]" "=" • string_exp 28 | "identifier" "$" "[" exp "]" "=" • "{" string_list "}" 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" 87 string_exp → • "quoted_string" 88 | • "identifier" "$" 89 | • "identifier" "$" "[" exp "]" 90 | • "debug" "(" "identifier" ")" 91 | • "debug" "(" "identifier" "$" ")" 92 | • "debug" "(" "identifier" "[" "]" "," exp "," exp ")" 93 | • "debug" "(" "identifier" "$" "[" "]" "," exp "," exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "debug" shift, and go to state 137 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "{" shift, and go to state 199 "identifier" shift, and go to state 138 "quoted_string" shift, and go to state 139 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 200 string_exp go to state 201

### State 185

25 array_assignment → "out_port" "[" exp "]" "=" exp • [$end, "also", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "print", "reset", "set_channels", "wait", "when", "while", "identifier", "in_port", "out_port"] 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97 $default reduce using rule 25 (array_assignment)

### State 186

9 zero_or_more_statements → zero_or_more_statements • statement 12 statement → • array_assignment 13 | • assignment 14 | • clear_statement 15 | • continue_statement 16 | • exit_statement 17 | • for_statement 18 | • if_statement 19 | • procedure_call 20 | • reset_statement 21 | • wait_statement 22 | • while_statement 23 array_assignment → • "identifier" "[" exp "]" "=" exp 24 | • "identifier" "[" exp "]" "=" "{" expression_list "}" 25 | • "out_port" "[" exp "]" "=" exp 26 | • "identifier" "$" "[" exp "]" "=" exp 27 | • "identifier" "$" "[" exp "]" "=" string_exp 28 | • "identifier" "$" "[" exp "]" "=" "{" string_list "}" 29 assignment → • "identifier" "=" exp 30 | • "in_port" "=" exp 31 | • "out_port" "=" exp 32 | • "identifier" "$" "=" exp 33 | • "identifier" "$" "=" string_exp 34 clear_statement → • "clear" "all" 35 continue_statement → • "continue" "for" 36 | • "continue" "while" 37 | • "continue" "all" 38 exit_statement → • "exit" "for" 39 | • "exit" "while" 40 | • "exit" "all" 41 for_statement → • "for" assignment "to" exp zero_or_more_statements "next" 42 | • "for" assignment "to" exp "step" exp zero_or_more_statements "next" 42 | "for" assignment "to" exp "step" exp zero_or_more_statements • "next" 43 | • "for" assignment "to" exp zero_or_more_statements "nexthighcpu" 44 | • "for" assignment "to" exp "step" exp zero_or_more_statements "nexthighcpu" 44 | "for" assignment "to" exp "step" exp zero_or_more_statements • "nexthighcpu" 48 if_statement → • "if" exp "then" zero_or_more_statements elseif_group "end" "if" 49 | • "if" exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" 50 procedure_call → • "print" "(" "out_port" "," string_list ")" 51 | • "set_channels" "(" "out_port" "," exp ")" 52 reset_statement → • "reset" 53 wait_statement → • "wait" exp 54 while_statement → • "while" exp zero_or_more_statements "end" "while" "clear" shift, and go to state 2 "continue" shift, and go to state 3 "exit" shift, and go to state 4 "for" shift, and go to state 5 "if" shift, and go to state 6 "next" shift, and go to state 202 "nexthighcpu" shift, and go to state 203 "print" shift, and go to state 7 "reset" shift, and go to state 8 "set_channels" shift, and go to state 9 "wait" shift, and go to state 10 "while" shift, and go to state 12 "identifier" shift, and go to state 13 "in_port" shift, and go to state 14 "out_port" shift, and go to state 15 statement go to state 135 array_assignment go to state 22 assignment go to state 23 clear_statement go to state 24 continue_statement go to state 25 exit_statement go to state 26 for_statement go to state 27 if_statement go to state 28 procedure_call go to state 29 reset_statement go to state 30 wait_statement go to state 31 while_statement go to state 32

### State 187

80 exp → "twoargfunc" "(" exp "," exp ")" • $default reduce using rule 80 (exp)

### State 188

9 zero_or_more_statements → zero_or_more_statements • statement 12 statement → • array_assignment 13 | • assignment 14 | • clear_statement 15 | • continue_statement 16 | • exit_statement 17 | • for_statement 18 | • if_statement 19 | • procedure_call 20 | • reset_statement 21 | • wait_statement 22 | • while_statement 23 array_assignment → • "identifier" "[" exp "]" "=" exp 24 | • "identifier" "[" exp "]" "=" "{" expression_list "}" 25 | • "out_port" "[" exp "]" "=" exp 26 | • "identifier" "$" "[" exp "]" "=" exp 27 | • "identifier" "$" "[" exp "]" "=" string_exp 28 | • "identifier" "$" "[" exp "]" "=" "{" string_list "}" 29 assignment → • "identifier" "=" exp 30 | • "in_port" "=" exp 31 | • "out_port" "=" exp 32 | • "identifier" "$" "=" exp 33 | • "identifier" "$" "=" string_exp 34 clear_statement → • "clear" "all" 35 continue_statement → • "continue" "for" 36 | • "continue" "while" 37 | • "continue" "all" 38 exit_statement → • "exit" "for" 39 | • "exit" "while" 40 | • "exit" "all" 41 for_statement → • "for" assignment "to" exp zero_or_more_statements "next" 42 | • "for" assignment "to" exp "step" exp zero_or_more_statements "next" 43 | • "for" assignment "to" exp zero_or_more_statements "nexthighcpu" 44 | • "for" assignment "to" exp "step" exp zero_or_more_statements "nexthighcpu" 48 if_statement → • "if" exp "then" zero_or_more_statements elseif_group "end" "if" 49 | • "if" exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" 49 | "if" exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements • "end" "if" 50 procedure_call → • "print" "(" "out_port" "," string_list ")" 51 | • "set_channels" "(" "out_port" "," exp ")" 52 reset_statement → • "reset" 53 wait_statement → • "wait" exp 54 while_statement → • "while" exp zero_or_more_statements "end" "while" "clear" shift, and go to state 2 "continue" shift, and go to state 3 "end" shift, and go to state 204 "exit" shift, and go to state 4 "for" shift, and go to state 5 "if" shift, and go to state 6 "print" shift, and go to state 7 "reset" shift, and go to state 8 "set_channels" shift, and go to state 9 "wait" shift, and go to state 10 "while" shift, and go to state 12 "identifier" shift, and go to state 13 "in_port" shift, and go to state 14 "out_port" shift, and go to state 15 statement go to state 135 array_assignment go to state 22 assignment go to state 23 clear_statement go to state 24 continue_statement go to state 25 exit_statement go to state 26 for_statement go to state 27 if_statement go to state 28 procedure_call go to state 29 reset_statement go to state 30 wait_statement go to state 31 while_statement go to state 32

### State 189

47 elseif_clause → "elseif" exp • "then" zero_or_more_statements 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "then" shift, and go to state 205 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 190

48 if_statement → "if" exp "then" zero_or_more_statements elseif_group "end" "if" • $default reduce using rule 48 (if_statement)

### State 191

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp 86 string_list → string_list "," exp • [")", "}", ","] "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97 $default reduce using rule 86 (string_list)

### State 192

85 string_list → string_list "," string_exp • $default reduce using rule 85 (string_list)

### State 193

24 array_assignment → "identifier" "[" exp "]" "=" "{" expression_list • "}" 56 expression_list → expression_list • "," exp "}" shift, and go to state 206 "," shift, and go to state 207

### State 194

55 expression_list → exp • ["}", ","] 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97 $default reduce using rule 55 (expression_list)

### State 195

90 string_exp → "debug" "(" "identifier" ")" • $default reduce using rule 90 (string_exp)

### State 196

92 string_exp → "debug" "(" "identifier" "[" • "]" "," exp "," exp ")" "]" shift, and go to state 208

### State 197

91 string_exp → "debug" "(" "identifier" "$" • ")" 93 | "debug" "(" "identifier" "$" • "[" "]" "," exp "," exp ")" ")" shift, and go to state 209 "[" shift, and go to state 210

### State 198

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp 89 string_exp → "identifier" "$" "[" exp • "]" "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "]" shift, and go to state 211 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 199

28 array_assignment → "identifier" "$" "[" exp "]" "=" "{" • string_list "}" 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" 83 string_list → • string_exp 84 | • exp 85 | • string_list "," string_exp 86 | • string_list "," exp 87 string_exp → • "quoted_string" 88 | • "identifier" "$" 89 | • "identifier" "$" "[" exp "]" 90 | • "debug" "(" "identifier" ")" 91 | • "debug" "(" "identifier" "$" ")" 92 | • "debug" "(" "identifier" "[" "]" "," exp "," exp ")" 93 | • "debug" "(" "identifier" "$" "[" "]" "," exp "," exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "debug" shift, and go to state 137 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 138 "quoted_string" shift, and go to state 139 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 157 string_list go to state 212 string_exp go to state 159

### State 200

26 array_assignment → "identifier" "$" "[" exp "]" "=" exp • [$end, "also", "clear", "continue", "else", "elseif", "end", "exit", "for", "if", "next", "nexthighcpu", "print", "reset", "set_channels", "wait", "when", "while", "identifier", "in_port", "out_port"] 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97 $default reduce using rule 26 (array_assignment)

### State 201

27 array_assignment → "identifier" "$" "[" exp "]" "=" string_exp • $default reduce using rule 27 (array_assignment)

### State 202

42 for_statement → "for" assignment "to" exp "step" exp zero_or_more_statements "next" • $default reduce using rule 42 (for_statement)

### State 203

44 for_statement → "for" assignment "to" exp "step" exp zero_or_more_statements "nexthighcpu" • $default reduce using rule 44 (for_statement)

### State 204

49 if_statement → "if" exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" • "if" "if" shift, and go to state 213

### State 205

8 zero_or_more_statements → • %empty 9 | • zero_or_more_statements statement 47 elseif_clause → "elseif" exp "then" • zero_or_more_statements $default reduce using rule 8 (zero_or_more_statements) zero_or_more_statements go to state 214

### State 206

24 array_assignment → "identifier" "[" exp "]" "=" "{" expression_list "}" • $default reduce using rule 24 (array_assignment)

### State 207

56 expression_list → expression_list "," • exp 57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 215

### State 208

92 string_exp → "debug" "(" "identifier" "[" "]" • "," exp "," exp ")" "," shift, and go to state 216

### State 209

91 string_exp → "debug" "(" "identifier" "$" ")" • $default reduce using rule 91 (string_exp)

### State 210

93 string_exp → "debug" "(" "identifier" "$" "[" • "]" "," exp "," exp ")" "]" shift, and go to state 217

### State 211

89 string_exp → "identifier" "$" "[" exp "]" • $default reduce using rule 89 (string_exp)

### State 212

28 array_assignment → "identifier" "$" "[" exp "]" "=" "{" string_list • "}" 85 string_list → string_list • "," string_exp 86 | string_list • "," exp "}" shift, and go to state 218 "," shift, and go to state 178

### State 213

49 if_statement → "if" exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" • $default reduce using rule 49 (if_statement)

### State 214

9 zero_or_more_statements → zero_or_more_statements • statement 12 statement → • array_assignment 13 | • assignment 14 | • clear_statement 15 | • continue_statement 16 | • exit_statement 17 | • for_statement 18 | • if_statement 19 | • procedure_call 20 | • reset_statement 21 | • wait_statement 22 | • while_statement 23 array_assignment → • "identifier" "[" exp "]" "=" exp 24 | • "identifier" "[" exp "]" "=" "{" expression_list "}" 25 | • "out_port" "[" exp "]" "=" exp 26 | • "identifier" "$" "[" exp "]" "=" exp 27 | • "identifier" "$" "[" exp "]" "=" string_exp 28 | • "identifier" "$" "[" exp "]" "=" "{" string_list "}" 29 assignment → • "identifier" "=" exp 30 | • "in_port" "=" exp 31 | • "out_port" "=" exp 32 | • "identifier" "$" "=" exp 33 | • "identifier" "$" "=" string_exp 34 clear_statement → • "clear" "all" 35 continue_statement → • "continue" "for" 36 | • "continue" "while" 37 | • "continue" "all" 38 exit_statement → • "exit" "for" 39 | • "exit" "while" 40 | • "exit" "all" 41 for_statement → • "for" assignment "to" exp zero_or_more_statements "next" 42 | • "for" assignment "to" exp "step" exp zero_or_more_statements "next" 43 | • "for" assignment "to" exp zero_or_more_statements "nexthighcpu" 44 | • "for" assignment "to" exp "step" exp zero_or_more_statements "nexthighcpu" 47 elseif_clause → "elseif" exp "then" zero_or_more_statements • ["else", "elseif", "end"] 48 if_statement → • "if" exp "then" zero_or_more_statements elseif_group "end" "if" 49 | • "if" exp "then" zero_or_more_statements elseif_group "else" zero_or_more_statements "end" "if" 50 procedure_call → • "print" "(" "out_port" "," string_list ")" 51 | • "set_channels" "(" "out_port" "," exp ")" 52 reset_statement → • "reset" 53 wait_statement → • "wait" exp 54 while_statement → • "while" exp zero_or_more_statements "end" "while" "clear" shift, and go to state 2 "continue" shift, and go to state 3 "exit" shift, and go to state 4 "for" shift, and go to state 5 "if" shift, and go to state 6 "print" shift, and go to state 7 "reset" shift, and go to state 8 "set_channels" shift, and go to state 9 "wait" shift, and go to state 10 "while" shift, and go to state 12 "identifier" shift, and go to state 13 "in_port" shift, and go to state 14 "out_port" shift, and go to state 15 $default reduce using rule 47 (elseif_clause) statement go to state 135 array_assignment go to state 22 assignment go to state 23 clear_statement go to state 24 continue_statement go to state 25 exit_statement go to state 26 for_statement go to state 27 if_statement go to state 28 procedure_call go to state 29 reset_statement go to state 30 wait_statement go to state 31 while_statement go to state 32

### State 215

56 expression_list → expression_list "," exp • ["}", ","] 67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "?" shift, and go to state 96 "comparison" shift, and go to state 97 $default reduce using rule 56 (expression_list)

### State 216

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" 92 string_exp → "debug" "(" "identifier" "[" "]" "," • exp "," exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 219

### State 217

93 string_exp → "debug" "(" "identifier" "$" "[" "]" • "," exp "," exp ")" "," shift, and go to state 220

### State 218

28 array_assignment → "identifier" "$" "[" exp "]" "=" "{" string_list "}" • $default reduce using rule 28 (array_assignment)

### State 219

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp 92 string_exp → "debug" "(" "identifier" "[" "]" "," exp • "," exp ")" "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "," shift, and go to state 221 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 220

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" 93 string_exp → "debug" "(" "identifier" "$" "[" "]" "," • exp "," exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 222

### State 221

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" 92 string_exp → "debug" "(" "identifier" "[" "]" "," exp "," • exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 223

### State 222

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp 93 string_exp → "debug" "(" "identifier" "$" "[" "]" "," exp • "," exp ")" "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 "," shift, and go to state 224 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 223

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp 92 string_exp → "debug" "(" "identifier" "[" "]" "," exp "," exp • ")" "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 ")" shift, and go to state 225 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 224

57 exp → • "number" 58 | • "note" 59 | • "-" "number" 60 | • "not" exp 61 | • "in_port" 62 | • "in_port" "[" exp "]" 63 | • "out_port" 64 | • "out_port" "[" exp "]" 65 | • "identifier" 66 | • "identifier" "[" exp "]" 67 | • exp "+" exp 68 | • exp "-" exp 69 | • exp "*" exp 70 | • exp "/" exp 71 | • exp "comparison" exp 72 | • exp "and" exp 73 | • exp "or" exp 74 | • "zeroargfunc" "(" ")" 75 | • "channels" "(" "in_port" ")" 76 | • "connected" "(" "in_port" ")" 77 | • "connected" "(" "out_port" ")" 78 | • "trigger" "(" "in_port" ")" 79 | • "oneargfunc" "(" exp ")" 80 | • "twoargfunc" "(" exp "," exp ")" 81 | • exp "?" exp ":" exp 82 | • "(" exp ")" 93 string_exp → "debug" "(" "identifier" "$" "[" "]" "," exp "," • exp ")" "channels" shift, and go to state 44 "connected" shift, and go to state 45 "not" shift, and go to state 46 "trigger" shift, and go to state 47 "-" shift, and go to state 48 "(" shift, and go to state 49 "identifier" shift, and go to state 50 "number" shift, and go to state 51 "note" shift, and go to state 52 "in_port" shift, and go to state 53 "out_port" shift, and go to state 54 "zeroargfunc" shift, and go to state 55 "oneargfunc" shift, and go to state 56 "twoargfunc" shift, and go to state 57 exp go to state 226

### State 225

92 string_exp → "debug" "(" "identifier" "[" "]" "," exp "," exp ")" • $default reduce using rule 92 (string_exp)

### State 226

67 exp → exp • "+" exp 68 | exp • "-" exp 69 | exp • "*" exp 70 | exp • "/" exp 71 | exp • "comparison" exp 72 | exp • "and" exp 73 | exp • "or" exp 81 | exp • "?" exp ":" exp 93 string_exp → "debug" "(" "identifier" "$" "[" "]" "," exp "," exp • ")" "and" shift, and go to state 89 "or" shift, and go to state 90 "-" shift, and go to state 92 "+" shift, and go to state 93 "*" shift, and go to state 94 "/" shift, and go to state 95 ")" shift, and go to state 227 "?" shift, and go to state 96 "comparison" shift, and go to state 97

### State 227

93 string_exp → "debug" "(" "identifier" "$" "[" "]" "," exp "," exp ")" • $default reduce using rule 93 (string_exp)