antelope 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +25 -25
  3. data/.rspec +3 -3
  4. data/.travis.yml +10 -10
  5. data/.yardopts +7 -7
  6. data/CONTRIBUTING.md +50 -38
  7. data/GENERATORS.md +180 -124
  8. data/Gemfile +7 -7
  9. data/LICENSE.txt +22 -22
  10. data/README.md +240 -104
  11. data/Rakefile +2 -2
  12. data/TODO.md +58 -58
  13. data/antelope.gemspec +29 -28
  14. data/bin/antelope +7 -7
  15. data/examples/deterministic.ace +35 -35
  16. data/examples/example.ace +52 -51
  17. data/examples/example.ace.err +192 -192
  18. data/examples/example.ace.inf +432 -432
  19. data/examples/example.ate +70 -70
  20. data/examples/example.ate.err +192 -192
  21. data/examples/example.ate.inf +432 -432
  22. data/examples/liquidscript.ace +233 -233
  23. data/examples/simple.ace +22 -22
  24. data/lib/antelope/ace/compiler.rb +334 -334
  25. data/lib/antelope/ace/errors.rb +30 -30
  26. data/lib/antelope/ace/scanner/argument.rb +57 -57
  27. data/lib/antelope/ace/scanner/first.rb +89 -89
  28. data/lib/antelope/ace/scanner/second.rb +178 -178
  29. data/lib/antelope/ace/scanner/third.rb +27 -27
  30. data/lib/antelope/ace/scanner.rb +144 -144
  31. data/lib/antelope/ace.rb +47 -47
  32. data/lib/antelope/cli.rb +60 -60
  33. data/lib/antelope/errors.rb +25 -25
  34. data/lib/antelope/generation/constructor/first.rb +86 -86
  35. data/lib/antelope/generation/constructor/follow.rb +105 -105
  36. data/lib/antelope/generation/constructor/nullable.rb +64 -64
  37. data/lib/antelope/generation/constructor.rb +127 -127
  38. data/lib/antelope/generation/errors.rb +17 -17
  39. data/lib/antelope/generation/null.rb +13 -13
  40. data/lib/antelope/generation/recognizer/rule.rb +216 -216
  41. data/lib/antelope/generation/recognizer/state.rb +129 -129
  42. data/lib/antelope/generation/recognizer.rb +177 -177
  43. data/lib/antelope/generation/tableizer.rb +176 -176
  44. data/lib/antelope/generation.rb +15 -15
  45. data/lib/antelope/generator/base/coerce.rb +115 -0
  46. data/lib/antelope/generator/base/extra.rb +50 -0
  47. data/lib/antelope/generator/base.rb +134 -264
  48. data/lib/antelope/generator/c.rb +11 -11
  49. data/lib/antelope/generator/c_header.rb +105 -105
  50. data/lib/antelope/generator/c_source.rb +39 -39
  51. data/lib/antelope/generator/error.rb +34 -34
  52. data/lib/antelope/generator/group.rb +60 -57
  53. data/lib/antelope/generator/html.rb +51 -51
  54. data/lib/antelope/generator/info.rb +47 -47
  55. data/lib/antelope/generator/null.rb +18 -18
  56. data/lib/antelope/generator/output.rb +17 -17
  57. data/lib/antelope/generator/ruby.rb +112 -79
  58. data/lib/antelope/generator/templates/c_header.ant +36 -36
  59. data/lib/antelope/generator/templates/c_source.ant +202 -202
  60. data/lib/antelope/generator/templates/error.erb +40 -0
  61. data/lib/antelope/generator/templates/html/antelope.css +53 -1
  62. data/lib/antelope/generator/templates/html/antelope.html +82 -1
  63. data/lib/antelope/generator/templates/html/antelope.js +9 -1
  64. data/lib/antelope/generator/templates/html/css.ant +53 -53
  65. data/lib/antelope/generator/templates/html/html.ant +82 -82
  66. data/lib/antelope/generator/templates/html/js.ant +9 -9
  67. data/lib/antelope/generator/templates/info.erb +61 -0
  68. data/lib/antelope/generator/templates/{ruby.ant → ruby.erb} +171 -178
  69. data/lib/antelope/generator.rb +62 -66
  70. data/lib/antelope/grammar/generation.rb +76 -76
  71. data/lib/antelope/grammar/loading.rb +84 -84
  72. data/lib/antelope/grammar/precedence.rb +59 -59
  73. data/lib/antelope/grammar/precedences.rb +64 -64
  74. data/lib/antelope/grammar/production.rb +56 -56
  75. data/lib/antelope/grammar/productions.rb +154 -154
  76. data/lib/antelope/grammar/symbols.rb +64 -64
  77. data/lib/antelope/grammar/token/epsilon.rb +23 -23
  78. data/lib/antelope/grammar/token/error.rb +24 -24
  79. data/lib/antelope/grammar/token/nonterminal.rb +15 -15
  80. data/lib/antelope/grammar/token/terminal.rb +15 -15
  81. data/lib/antelope/grammar/token.rb +231 -231
  82. data/lib/antelope/grammar.rb +68 -68
  83. data/lib/antelope/version.rb +6 -6
  84. data/lib/antelope.rb +18 -19
  85. data/optimizations.txt +42 -42
  86. data/spec/antelope/ace/compiler_spec.rb +60 -60
  87. data/spec/antelope/ace/scanner_spec.rb +27 -27
  88. data/spec/antelope/generation/constructor_spec.rb +131 -131
  89. data/spec/fixtures/simple.ace +22 -22
  90. data/spec/spec_helper.rb +39 -39
  91. data/spec/support/benchmark_helper.rb +5 -5
  92. data/spec/support/grammar_helper.rb +14 -14
  93. data/subl/Ace (Ruby).JSON-tmLanguage +94 -94
  94. data/subl/Ace (Ruby).tmLanguage +153 -153
  95. metadata +22 -11
  96. data/lib/antelope/generator/templates/error.ant +0 -34
  97. data/lib/antelope/generator/templates/info.ant +0 -53
  98. data/lib/antelope/template/compiler.rb +0 -78
  99. data/lib/antelope/template/errors.rb +0 -9
  100. data/lib/antelope/template/scanner.rb +0 -109
  101. data/lib/antelope/template.rb +0 -64
  102. data/spec/antelope/template_spec.rb +0 -50
data/examples/example.ace CHANGED
@@ -1,51 +1,52 @@
1
- %require "~> 0.1"
2
- %generator "ruby"
3
-
4
- %null.data ruby.error-class { SyntaxError }
5
- %panic-mode true
6
- %output.verbose true
7
- %terminal NUMBER
8
- %terminal MULTIPLY "*"
9
- %terminal EXPONENTIATE "^"
10
- %terminal DIVIDE "/"
11
- %terminal ADD "+"
12
- %terminal SUBTRACT "-"
13
- %terminal LPAREN "("
14
- %terminal RPAREN ")"
15
-
16
- %right EXPONENTIATE
17
- %left MULTIPLY DIVIDE
18
- %left ADD SUBTRACT
19
-
20
- %%
21
-
22
- expression: NUMBER { |match| match[0][1] }
23
- | expression EXPONENTIATE expression { |match| match[0]** match[2] }
24
- | expression ADD expression { |match| match[0] + match[2] }
25
- | expression SUBTRACT expression { |match| match[0] - match[2] }
26
- | expression MULTIPLY expression { |match| match[0] * match[2] }
27
- | expression DIVIDE expression { |match| match[0] / match[2] }
28
- | LPAREN expression RPAREN { |match| match[1] }
29
- | LPAREN error RPAREN { |match| match[1] }
30
-
31
- %%
32
-
33
- class ExampleParser
34
- %{write}
35
-
36
- def type(token)
37
- token[0]
38
- end
39
- end
40
-
41
- input = [
42
- [:LPAREN],
43
- [:NUMBER, 2],
44
- [:ADD],
45
- [:ADD, 2],
46
- [:RPAREN],
47
- [:MULTIPLY],
48
- [:NUMBER, 3]
49
- ]
50
-
51
- p ExampleParser.new.parse(input)
1
+ %require "~> 0.1"
2
+ %generator "ruby"
3
+
4
+ %null.data ruby.error-class { SyntaxError }
5
+ %output.panic-mode true
6
+ %output.verbose true
7
+ %ruby.indent 1
8
+ %terminal NUMBER
9
+ %terminal MULTIPLY "*"
10
+ %terminal EXPONENTIATE "^"
11
+ %terminal DIVIDE "/"
12
+ %terminal ADD "+"
13
+ %terminal SUBTRACT "-"
14
+ %terminal LPAREN "("
15
+ %terminal RPAREN ")"
16
+
17
+ %right EXPONENTIATE
18
+ %left MULTIPLY DIVIDE
19
+ %left ADD SUBTRACT
20
+
21
+ %%
22
+
23
+ expression: NUMBER { match[0][1] }
24
+ | expression EXPONENTIATE expression { match[0]** match[2] }
25
+ | expression ADD expression { match[0] + match[2] }
26
+ | expression SUBTRACT expression { match[0] - match[2] }
27
+ | expression MULTIPLY expression { match[0] * match[2] }
28
+ | expression DIVIDE expression { match[0] / match[2] }
29
+ | LPAREN expression RPAREN { match[1] }
30
+ | LPAREN error RPAREN { match[1] }
31
+
32
+ %%
33
+
34
+ class ExampleParser
35
+ %{write}
36
+
37
+ def type(token)
38
+ token[0]
39
+ end
40
+ end
41
+
42
+ input = [
43
+ [:LPAREN],
44
+ [:NUMBER, 2],
45
+ [:ADD],
46
+ [:ADD, 2],
47
+ [:RPAREN],
48
+ [:MULTIPLY],
49
+ [:NUMBER, 3]
50
+ ]
51
+
52
+ p ExampleParser.new.parse(input)
@@ -1,192 +1,192 @@
1
- Productions:
2
- 15/n1: expression → NUMBER { |a| a[1] }
3
- 26/n0: $start → expression $end
4
- 79/r4: expression → expression "^" expression { |a, _, b| a** b }
5
- 85/l2: expression → expression "+" expression { |a, _, b| a + b }
6
- 91/l2: expression → expression "-" expression { |a, _, b| a - b }
7
- 97/l3: expression → expression "*" expression { |a, _, b| a * b }
8
- 103/l3: expression → expression "/" expression { |a, _, b| a / b }
9
- 109/n1: expression → "(" expression ")" { |_, a, _| a }
10
- 110/n1: expression → "(" $error ")" { |_, e, _| e[1] }
11
-
12
- Error:
13
- Conflicts in State 12:
14
- On EXPONENTIATE (resolved):
15
- state 5/reduce 2 (r4 vs r4, -1)
16
- Rules:
17
- 79/r4: expression → expression "^" expression •
18
- {$end, "^", "+", "-", "*", "/", ")"}
19
- Transitions:
20
- 80/r4: expression → expression • "^" expression
21
- On ADD (resolved):
22
- state 6/reduce 2 (r4 vs l2, 1)
23
- Rules:
24
- 79/r4: expression → expression "^" expression •
25
- {$end, "^", "+", "-", "*", "/", ")"}
26
- Transitions:
27
- 81/l2: expression → expression • "+" expression
28
- On SUBTRACT (resolved):
29
- state 7/reduce 2 (r4 vs l2, 1)
30
- Rules:
31
- 79/r4: expression → expression "^" expression •
32
- {$end, "^", "+", "-", "*", "/", ")"}
33
- Transitions:
34
- 82/l2: expression → expression • "-" expression
35
- On MULTIPLY (resolved):
36
- state 8/reduce 2 (r4 vs l3, 1)
37
- Rules:
38
- 79/r4: expression → expression "^" expression •
39
- {$end, "^", "+", "-", "*", "/", ")"}
40
- Transitions:
41
- 83/l3: expression → expression • "*" expression
42
- On DIVIDE (resolved):
43
- state 9/reduce 2 (r4 vs l3, 1)
44
- Rules:
45
- 79/r4: expression → expression "^" expression •
46
- {$end, "^", "+", "-", "*", "/", ")"}
47
- Transitions:
48
- 84/l3: expression → expression • "/" expression
49
- Conflicts in State 13:
50
- On EXPONENTIATE (resolved):
51
- state 5/reduce 3 (l2 vs r4, -1)
52
- Rules:
53
- 85/l2: expression → expression "+" expression •
54
- {$end, "^", "+", "-", "*", "/", ")"}
55
- Transitions:
56
- 86/r4: expression → expression • "^" expression
57
- On ADD (resolved):
58
- state 6/reduce 3 (l2 vs l2, 1)
59
- Rules:
60
- 85/l2: expression → expression "+" expression •
61
- {$end, "^", "+", "-", "*", "/", ")"}
62
- Transitions:
63
- 87/l2: expression → expression • "+" expression
64
- On SUBTRACT (resolved):
65
- state 7/reduce 3 (l2 vs l2, 1)
66
- Rules:
67
- 85/l2: expression → expression "+" expression •
68
- {$end, "^", "+", "-", "*", "/", ")"}
69
- Transitions:
70
- 88/l2: expression → expression • "-" expression
71
- On MULTIPLY (resolved):
72
- state 8/reduce 3 (l2 vs l3, -1)
73
- Rules:
74
- 85/l2: expression → expression "+" expression •
75
- {$end, "^", "+", "-", "*", "/", ")"}
76
- Transitions:
77
- 89/l3: expression → expression • "*" expression
78
- On DIVIDE (resolved):
79
- state 9/reduce 3 (l2 vs l3, -1)
80
- Rules:
81
- 85/l2: expression → expression "+" expression •
82
- {$end, "^", "+", "-", "*", "/", ")"}
83
- Transitions:
84
- 90/l3: expression → expression • "/" expression
85
- Conflicts in State 14:
86
- On EXPONENTIATE (resolved):
87
- state 5/reduce 4 (l2 vs r4, -1)
88
- Rules:
89
- 91/l2: expression → expression "-" expression •
90
- {$end, "^", "+", "-", "*", "/", ")"}
91
- Transitions:
92
- 92/r4: expression → expression • "^" expression
93
- On ADD (resolved):
94
- state 6/reduce 4 (l2 vs l2, 1)
95
- Rules:
96
- 91/l2: expression → expression "-" expression •
97
- {$end, "^", "+", "-", "*", "/", ")"}
98
- Transitions:
99
- 93/l2: expression → expression • "+" expression
100
- On SUBTRACT (resolved):
101
- state 7/reduce 4 (l2 vs l2, 1)
102
- Rules:
103
- 91/l2: expression → expression "-" expression •
104
- {$end, "^", "+", "-", "*", "/", ")"}
105
- Transitions:
106
- 94/l2: expression → expression • "-" expression
107
- On MULTIPLY (resolved):
108
- state 8/reduce 4 (l2 vs l3, -1)
109
- Rules:
110
- 91/l2: expression → expression "-" expression •
111
- {$end, "^", "+", "-", "*", "/", ")"}
112
- Transitions:
113
- 95/l3: expression → expression • "*" expression
114
- On DIVIDE (resolved):
115
- state 9/reduce 4 (l2 vs l3, -1)
116
- Rules:
117
- 91/l2: expression → expression "-" expression •
118
- {$end, "^", "+", "-", "*", "/", ")"}
119
- Transitions:
120
- 96/l3: expression → expression • "/" expression
121
- Conflicts in State 15:
122
- On EXPONENTIATE (resolved):
123
- state 5/reduce 5 (l3 vs r4, -1)
124
- Rules:
125
- 97/l3: expression → expression "*" expression •
126
- {$end, "^", "+", "-", "*", "/", ")"}
127
- Transitions:
128
- 98/r4: expression → expression • "^" expression
129
- On ADD (resolved):
130
- state 6/reduce 5 (l3 vs l2, 1)
131
- Rules:
132
- 97/l3: expression → expression "*" expression •
133
- {$end, "^", "+", "-", "*", "/", ")"}
134
- Transitions:
135
- 99/l2: expression → expression • "+" expression
136
- On SUBTRACT (resolved):
137
- state 7/reduce 5 (l3 vs l2, 1)
138
- Rules:
139
- 97/l3: expression → expression "*" expression •
140
- {$end, "^", "+", "-", "*", "/", ")"}
141
- Transitions:
142
- 100/l2: expression → expression • "-" expression
143
- On MULTIPLY (resolved):
144
- state 8/reduce 5 (l3 vs l3, 1)
145
- Rules:
146
- 97/l3: expression → expression "*" expression •
147
- {$end, "^", "+", "-", "*", "/", ")"}
148
- Transitions:
149
- 101/l3: expression → expression • "*" expression
150
- On DIVIDE (resolved):
151
- state 9/reduce 5 (l3 vs l3, 1)
152
- Rules:
153
- 97/l3: expression → expression "*" expression •
154
- {$end, "^", "+", "-", "*", "/", ")"}
155
- Transitions:
156
- 102/l3: expression → expression • "/" expression
157
- Conflicts in State 16:
158
- On EXPONENTIATE (resolved):
159
- state 5/reduce 6 (l3 vs r4, -1)
160
- Rules:
161
- 103/l3: expression → expression "/" expression •
162
- {$end, "^", "+", "-", "*", "/", ")"}
163
- Transitions:
164
- 104/r4: expression → expression • "^" expression
165
- On ADD (resolved):
166
- state 6/reduce 6 (l3 vs l2, 1)
167
- Rules:
168
- 103/l3: expression → expression "/" expression •
169
- {$end, "^", "+", "-", "*", "/", ")"}
170
- Transitions:
171
- 105/l2: expression → expression • "+" expression
172
- On SUBTRACT (resolved):
173
- state 7/reduce 6 (l3 vs l2, 1)
174
- Rules:
175
- 103/l3: expression → expression "/" expression •
176
- {$end, "^", "+", "-", "*", "/", ")"}
177
- Transitions:
178
- 106/l2: expression → expression • "-" expression
179
- On MULTIPLY (resolved):
180
- state 8/reduce 6 (l3 vs l3, 1)
181
- Rules:
182
- 103/l3: expression → expression "/" expression •
183
- {$end, "^", "+", "-", "*", "/", ")"}
184
- Transitions:
185
- 107/l3: expression → expression • "*" expression
186
- On DIVIDE (resolved):
187
- state 9/reduce 6 (l3 vs l3, 1)
188
- Rules:
189
- 103/l3: expression → expression "/" expression •
190
- {$end, "^", "+", "-", "*", "/", ")"}
191
- Transitions:
192
- 108/l3: expression → expression • "/" expression
1
+ Productions:
2
+ 15/n1: expression → NUMBER { match[0][1] }
3
+ 26/n0: $start → expression $end
4
+ 79/r4: expression → expression "^" expression { match[0]** match[2] }
5
+ 85/l2: expression → expression "+" expression { match[0] + match[2] }
6
+ 91/l2: expression → expression "-" expression { match[0] - match[2] }
7
+ 97/l3: expression → expression "*" expression { match[0] * match[2] }
8
+ 103/l3: expression → expression "/" expression { match[0] / match[2] }
9
+ 109/n1: expression → "(" expression ")" { match[1] }
10
+ 110/n1: expression → "(" $error ")" { match[1] }
11
+
12
+ Error:
13
+ Conflicts in State 12:
14
+ On EXPONENTIATE (resolved):
15
+ state 5/reduce 2 (r4 vs r4, -1)
16
+ Rules:
17
+ 79/r4: expression → expression "^" expression •
18
+ {$end, "^", "+", "-", "*", "/", ")"}
19
+ Transitions:
20
+ 80/r4: expression → expression • "^" expression
21
+ On ADD (resolved):
22
+ state 6/reduce 2 (r4 vs l2, 1)
23
+ Rules:
24
+ 79/r4: expression → expression "^" expression •
25
+ {$end, "^", "+", "-", "*", "/", ")"}
26
+ Transitions:
27
+ 81/l2: expression → expression • "+" expression
28
+ On SUBTRACT (resolved):
29
+ state 7/reduce 2 (r4 vs l2, 1)
30
+ Rules:
31
+ 79/r4: expression → expression "^" expression •
32
+ {$end, "^", "+", "-", "*", "/", ")"}
33
+ Transitions:
34
+ 82/l2: expression → expression • "-" expression
35
+ On MULTIPLY (resolved):
36
+ state 8/reduce 2 (r4 vs l3, 1)
37
+ Rules:
38
+ 79/r4: expression → expression "^" expression •
39
+ {$end, "^", "+", "-", "*", "/", ")"}
40
+ Transitions:
41
+ 83/l3: expression → expression • "*" expression
42
+ On DIVIDE (resolved):
43
+ state 9/reduce 2 (r4 vs l3, 1)
44
+ Rules:
45
+ 79/r4: expression → expression "^" expression •
46
+ {$end, "^", "+", "-", "*", "/", ")"}
47
+ Transitions:
48
+ 84/l3: expression → expression • "/" expression
49
+ Conflicts in State 13:
50
+ On EXPONENTIATE (resolved):
51
+ state 5/reduce 3 (l2 vs r4, -1)
52
+ Rules:
53
+ 85/l2: expression → expression "+" expression •
54
+ {$end, "^", "+", "-", "*", "/", ")"}
55
+ Transitions:
56
+ 86/r4: expression → expression • "^" expression
57
+ On ADD (resolved):
58
+ state 6/reduce 3 (l2 vs l2, 1)
59
+ Rules:
60
+ 85/l2: expression → expression "+" expression •
61
+ {$end, "^", "+", "-", "*", "/", ")"}
62
+ Transitions:
63
+ 87/l2: expression → expression • "+" expression
64
+ On SUBTRACT (resolved):
65
+ state 7/reduce 3 (l2 vs l2, 1)
66
+ Rules:
67
+ 85/l2: expression → expression "+" expression •
68
+ {$end, "^", "+", "-", "*", "/", ")"}
69
+ Transitions:
70
+ 88/l2: expression → expression • "-" expression
71
+ On MULTIPLY (resolved):
72
+ state 8/reduce 3 (l2 vs l3, -1)
73
+ Rules:
74
+ 85/l2: expression → expression "+" expression •
75
+ {$end, "^", "+", "-", "*", "/", ")"}
76
+ Transitions:
77
+ 89/l3: expression → expression • "*" expression
78
+ On DIVIDE (resolved):
79
+ state 9/reduce 3 (l2 vs l3, -1)
80
+ Rules:
81
+ 85/l2: expression → expression "+" expression •
82
+ {$end, "^", "+", "-", "*", "/", ")"}
83
+ Transitions:
84
+ 90/l3: expression → expression • "/" expression
85
+ Conflicts in State 14:
86
+ On EXPONENTIATE (resolved):
87
+ state 5/reduce 4 (l2 vs r4, -1)
88
+ Rules:
89
+ 91/l2: expression → expression "-" expression •
90
+ {$end, "^", "+", "-", "*", "/", ")"}
91
+ Transitions:
92
+ 92/r4: expression → expression • "^" expression
93
+ On ADD (resolved):
94
+ state 6/reduce 4 (l2 vs l2, 1)
95
+ Rules:
96
+ 91/l2: expression → expression "-" expression •
97
+ {$end, "^", "+", "-", "*", "/", ")"}
98
+ Transitions:
99
+ 93/l2: expression → expression • "+" expression
100
+ On SUBTRACT (resolved):
101
+ state 7/reduce 4 (l2 vs l2, 1)
102
+ Rules:
103
+ 91/l2: expression → expression "-" expression •
104
+ {$end, "^", "+", "-", "*", "/", ")"}
105
+ Transitions:
106
+ 94/l2: expression → expression • "-" expression
107
+ On MULTIPLY (resolved):
108
+ state 8/reduce 4 (l2 vs l3, -1)
109
+ Rules:
110
+ 91/l2: expression → expression "-" expression •
111
+ {$end, "^", "+", "-", "*", "/", ")"}
112
+ Transitions:
113
+ 95/l3: expression → expression • "*" expression
114
+ On DIVIDE (resolved):
115
+ state 9/reduce 4 (l2 vs l3, -1)
116
+ Rules:
117
+ 91/l2: expression → expression "-" expression •
118
+ {$end, "^", "+", "-", "*", "/", ")"}
119
+ Transitions:
120
+ 96/l3: expression → expression • "/" expression
121
+ Conflicts in State 15:
122
+ On EXPONENTIATE (resolved):
123
+ state 5/reduce 5 (l3 vs r4, -1)
124
+ Rules:
125
+ 97/l3: expression → expression "*" expression •
126
+ {$end, "^", "+", "-", "*", "/", ")"}
127
+ Transitions:
128
+ 98/r4: expression → expression • "^" expression
129
+ On ADD (resolved):
130
+ state 6/reduce 5 (l3 vs l2, 1)
131
+ Rules:
132
+ 97/l3: expression → expression "*" expression •
133
+ {$end, "^", "+", "-", "*", "/", ")"}
134
+ Transitions:
135
+ 99/l2: expression → expression • "+" expression
136
+ On SUBTRACT (resolved):
137
+ state 7/reduce 5 (l3 vs l2, 1)
138
+ Rules:
139
+ 97/l3: expression → expression "*" expression •
140
+ {$end, "^", "+", "-", "*", "/", ")"}
141
+ Transitions:
142
+ 100/l2: expression → expression • "-" expression
143
+ On MULTIPLY (resolved):
144
+ state 8/reduce 5 (l3 vs l3, 1)
145
+ Rules:
146
+ 97/l3: expression → expression "*" expression •
147
+ {$end, "^", "+", "-", "*", "/", ")"}
148
+ Transitions:
149
+ 101/l3: expression → expression • "*" expression
150
+ On DIVIDE (resolved):
151
+ state 9/reduce 5 (l3 vs l3, 1)
152
+ Rules:
153
+ 97/l3: expression → expression "*" expression •
154
+ {$end, "^", "+", "-", "*", "/", ")"}
155
+ Transitions:
156
+ 102/l3: expression → expression • "/" expression
157
+ Conflicts in State 16:
158
+ On EXPONENTIATE (resolved):
159
+ state 5/reduce 6 (l3 vs r4, -1)
160
+ Rules:
161
+ 103/l3: expression → expression "/" expression •
162
+ {$end, "^", "+", "-", "*", "/", ")"}
163
+ Transitions:
164
+ 104/r4: expression → expression • "^" expression
165
+ On ADD (resolved):
166
+ state 6/reduce 6 (l3 vs l2, 1)
167
+ Rules:
168
+ 103/l3: expression → expression "/" expression •
169
+ {$end, "^", "+", "-", "*", "/", ")"}
170
+ Transitions:
171
+ 105/l2: expression → expression • "+" expression
172
+ On SUBTRACT (resolved):
173
+ state 7/reduce 6 (l3 vs l2, 1)
174
+ Rules:
175
+ 103/l3: expression → expression "/" expression •
176
+ {$end, "^", "+", "-", "*", "/", ")"}
177
+ Transitions:
178
+ 106/l2: expression → expression • "-" expression
179
+ On MULTIPLY (resolved):
180
+ state 8/reduce 6 (l3 vs l3, 1)
181
+ Rules:
182
+ 103/l3: expression → expression "/" expression •
183
+ {$end, "^", "+", "-", "*", "/", ")"}
184
+ Transitions:
185
+ 107/l3: expression → expression • "*" expression
186
+ On DIVIDE (resolved):
187
+ state 9/reduce 6 (l3 vs l3, 1)
188
+ Rules:
189
+ 103/l3: expression → expression "/" expression •
190
+ {$end, "^", "+", "-", "*", "/", ")"}
191
+ Transitions:
192
+ 108/l3: expression → expression • "/" expression