hotcell 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -1
  3. data/.rspec +1 -0
  4. data/.rvmrc +1 -1
  5. data/.travis.yml +7 -0
  6. data/Gemfile +4 -1
  7. data/README.md +361 -2
  8. data/Rakefile +28 -6
  9. data/ext/lexerc/extconf.rb +3 -0
  10. data/ext/lexerc/lexerc.c +618 -0
  11. data/ext/lexerc/lexerc.h +20 -0
  12. data/ext/lexerc/lexerc.rl +167 -0
  13. data/hotcell.gemspec +8 -7
  14. data/lib/hotcell/commands/case.rb +59 -0
  15. data/lib/hotcell/commands/cycle.rb +38 -0
  16. data/lib/hotcell/commands/for.rb +70 -0
  17. data/lib/hotcell/commands/if.rb +51 -0
  18. data/lib/hotcell/commands/include.rb +21 -0
  19. data/lib/hotcell/commands/scope.rb +13 -0
  20. data/lib/hotcell/commands/unless.rb +23 -0
  21. data/lib/hotcell/commands.rb +13 -0
  22. data/lib/hotcell/config.rb +33 -6
  23. data/lib/hotcell/context.rb +40 -7
  24. data/lib/hotcell/errors.rb +37 -28
  25. data/lib/hotcell/extensions.rb +4 -0
  26. data/lib/hotcell/lexer.rb +19 -635
  27. data/lib/hotcell/lexerr.rb +572 -0
  28. data/lib/hotcell/lexerr.rl +137 -0
  29. data/lib/hotcell/node/assigner.rb +1 -5
  30. data/lib/hotcell/node/block.rb +17 -40
  31. data/lib/hotcell/node/command.rb +29 -22
  32. data/lib/hotcell/node/hasher.rb +1 -1
  33. data/lib/hotcell/node/summoner.rb +2 -6
  34. data/lib/hotcell/node/tag.rb +10 -7
  35. data/lib/hotcell/node.rb +12 -1
  36. data/lib/hotcell/parser.rb +474 -408
  37. data/lib/hotcell/parser.y +175 -117
  38. data/lib/hotcell/resolver.rb +44 -0
  39. data/lib/hotcell/source.rb +35 -0
  40. data/lib/hotcell/template.rb +15 -6
  41. data/lib/hotcell/version.rb +1 -1
  42. data/lib/hotcell.rb +15 -10
  43. data/spec/data/templates/simple.hc +1 -0
  44. data/spec/lib/hotcell/commands/case_spec.rb +39 -0
  45. data/spec/lib/hotcell/commands/cycle_spec.rb +29 -0
  46. data/spec/lib/hotcell/commands/for_spec.rb +65 -0
  47. data/spec/lib/hotcell/commands/if_spec.rb +35 -0
  48. data/spec/lib/hotcell/commands/include_spec.rb +39 -0
  49. data/spec/lib/hotcell/commands/scope_spec.rb +16 -0
  50. data/spec/lib/hotcell/commands/unless_spec.rb +23 -0
  51. data/spec/lib/hotcell/config_spec.rb +35 -10
  52. data/spec/lib/hotcell/context_spec.rb +58 -18
  53. data/spec/lib/hotcell/lexer_spec.rb +37 -28
  54. data/spec/lib/hotcell/node/block_spec.rb +28 -56
  55. data/spec/lib/hotcell/node/command_spec.rb +7 -31
  56. data/spec/lib/hotcell/node/tag_spec.rb +16 -0
  57. data/spec/lib/hotcell/parser_spec.rb +152 -123
  58. data/spec/lib/hotcell/resolver_spec.rb +28 -0
  59. data/spec/lib/hotcell/source_spec.rb +41 -0
  60. data/spec/lib/hotcell/template_spec.rb +47 -4
  61. data/spec/lib/hotcell_spec.rb +2 -1
  62. data/spec/spec_helper.rb +6 -2
  63. metadata +54 -24
  64. data/lib/hotcell/.DS_Store +0 -0
  65. data/lib/hotcell/lexer.rl +0 -299
  66. data/misc/rage.rl +0 -1999
  67. data/misc/unicode2ragel.rb +0 -305
@@ -5,31 +5,59 @@
5
5
  #
6
6
 
7
7
  require 'racc/parser.rb'
8
-
9
- require 'hotcell/lexer'
10
8
  module Hotcell
11
9
  class Parser < Racc::Parser
12
10
 
13
- module_eval(<<'...end parser.y/module_eval...', 'parser.y', 176)
14
- NEWLINE_PRED = Set.new(Lexer::BOPEN.values + Lexer::OPERATIONS.values)
15
- NEWLINE_NEXT = Set.new(Lexer::BCLOSE.values + [:NEWLINE])
11
+ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 194)
12
+ OPERATIONS = {
13
+ '+' => :PLUS, '-' => :MINUS, '*' => :MULTIPLY, '**' => :POWER, '/' => :DIVIDE, '%' => :MODULO,
14
+
15
+ '&&' => :AND, '||' => :OR, '!' => :NOT, '==' => :EQUAL, '!=' => :INEQUAL,
16
+ '>' => :GT, '>=' => :GTE, '<' => :LT, '<=' => :LTE,
17
+
18
+ '=' => :ASSIGN, ',' => :COMMA, '.' => :PERIOD, ':' => :COLON, '?' => :QUESTION,
19
+ ';' => :SEMICOLON
20
+ }
21
+
22
+ BOPEN = { '[' => :AOPEN, '{' => :HOPEN, '(' => :POPEN }
23
+ BCLOSE = { ']' => :ACLOSE, '}' => :HCLOSE, ')' => :PCLOSE }
24
+
25
+ NEWLINE_PRED = Set.new(BOPEN.values + OPERATIONS.values)
26
+ NEWLINE_NEXT = Set.new(BCLOSE.values + [:NEWLINE])
16
27
 
17
28
  TAG_MODES = { '{{' => :normal, '{{!' => :silence }
18
29
 
19
- def initialize string, options = {}
20
- @lexer = Lexer.new(string)
30
+ def initialize source, options = {}
31
+ @source = Source.wrap(source)
32
+ @lexer = Lexer.new(source)
21
33
  @tokens = @lexer.tokens
22
34
  @position = -1
23
35
 
24
- @commands = Set.new(Array.wrap(options[:commands]).map(&:to_s))
25
- @blocks = Set.new(Array.wrap(options[:blocks]).map(&:to_s))
26
- @endblocks = Set.new(Array.wrap(options[:blocks]).map { |identifer| "end#{identifer}" })
27
- @subcommands = Set.new(Array.wrap(options[:subcommands]).map(&:to_s))
36
+ @commands = options[:commands] || {}
37
+ @blocks = options[:blocks] || {}
38
+ @endblocks = Set.new(@blocks.keys.map { |identifer| "end#{identifer}" })
39
+
40
+ @substack = []
41
+ @posstack = []
42
+ end
43
+
44
+ def build klass, *args
45
+ options = args.extract_options!
46
+ options[:source] = @source
47
+ klass.build *args.push(options)
48
+ end
49
+
50
+ def pospoppush pop, push = 0
51
+ # because fuck the brains, that's why!
52
+ last = @posstack.pop
53
+ reduced = @posstack.push(@posstack.pop(pop)[push])[-1]
54
+ @posstack.push last
55
+ reduced
28
56
  end
29
57
 
30
58
  def parse
31
59
  if @tokens.size == 0
32
- Joiner.build :JOINER
60
+ build Joiner, :JOINER, position: 0
33
61
  else
34
62
  do_parse
35
63
  end
@@ -37,27 +65,32 @@ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 176)
37
65
 
38
66
  def next_token
39
67
  @position = @position + 1
40
-
41
68
  tcurr = @tokens[@position]
42
- tnext = @tokens[@position.next]
43
- tpred = @tokens[@position.pred]
44
69
 
45
70
  if tcurr && (tcurr[0] == :COMMENT || tcurr[0] == :NEWLINE && (
46
- (tpred && NEWLINE_PRED.include?(tpred[0])) ||
47
- (tnext && NEWLINE_NEXT.include?(tnext[0]))
71
+ ((tpred = @tokens[@position.pred]) && NEWLINE_PRED.include?(tpred[0])) ||
72
+ ((tnext = @tokens[@position.next]) && NEWLINE_NEXT.include?(tnext[0]))
48
73
  ))
49
74
  next_token
50
75
  else
76
+ if tcurr
77
+ @posstack << tcurr[1][1]
78
+ tcurr = [tcurr[0], tcurr[1][0]]
79
+ end
80
+
51
81
  if tcurr && tcurr[0] == :IDENTIFER
52
- if @commands.include?(tcurr[1])
82
+ if @commands.key?(tcurr[1])
53
83
  [:COMMAND, tcurr[1]]
54
- elsif @blocks.include?(tcurr[1])
84
+ elsif @blocks.key?(tcurr[1])
85
+ @substack.push(@blocks[tcurr[1]].subcommands)
55
86
  [:BLOCK, tcurr[1]]
87
+ elsif @substack.last && @substack.last.key?(tcurr[1])
88
+ [:SUBCOMMAND, tcurr[1]]
56
89
  elsif @endblocks.include?(tcurr[1])
90
+ @substack.pop
57
91
  [:ENDBLOCK, tcurr[1]]
58
- elsif @subcommands.include?(tcurr[1])
59
- [:SUBCOMMAND, tcurr[1]]
60
92
  elsif tcurr[1] == 'end'
93
+ @substack.pop
61
94
  [:END, tcurr[1]]
62
95
  else
63
96
  tcurr
@@ -67,43 +100,48 @@ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 176)
67
100
  end
68
101
  end
69
102
  end
103
+
104
+ def on_error(token, value, vstack)
105
+ raise Hotcell::UnexpectedLexem.new("#{token_to_str(token) || '?'} `#{value}`",
106
+ *@source.info(@posstack.last).values_at(:line, :column))
107
+ end
70
108
  ...end parser.y/module_eval...
71
109
  ##### State transition tables begin ###
72
110
 
73
111
  racc_action_table = [
74
112
  42, 10, 26, 106, 92, 141, 103, 92, 25, 24,
75
- 135, 61, 81, 82, 7, 44, 42, 103, 26, 104,
76
- 90, 62, 21, 22, 25, 24, 62, 132, 65, 7,
77
- 8, 134, 62, 131, 27, 87, 35, 36, 37, 38,
78
- 39, 40, 41, 43, 65, 133, 130, 104, 51, 52,
79
- 27, 127, 35, 36, 37, 38, 39, 40, 41, 43,
80
- 42, 129, 26, 81, 82, 106, 81, 82, 25, 24,
81
- 68, 105, 67, 69, 72, 62, 42, 142, 26, 7,
82
- 8, 54, 21, 22, 25, 24, 12, 16, 18, 19,
83
- 53, 81, 82, 49, 27, 68, 35, 36, 37, 38,
113
+ 136, 103, 135, 104, 81, 82, 42, 59, 26, 134,
114
+ 90, 60, 21, 22, 25, 24, 60, 132, 65, 7,
115
+ 8, 104, 60, 131, 27, 87, 35, 36, 37, 38,
116
+ 39, 40, 41, 43, 55, 127, 130, 106, 51, 52,
117
+ 27, 105, 35, 36, 37, 38, 39, 40, 41, 43,
118
+ 42, 129, 26, 7, 44, 60, 81, 82, 25, 24,
119
+ 68, 142, 67, 69, 72, 63, 42, 61, 26, 81,
120
+ 82, 49, 21, 22, 25, 24, 12, 14, 16, 106,
121
+ 18, 81, 82, nil, 27, 68, 35, 36, 37, 38,
84
122
  39, 40, 41, 43, 65, 81, 82, 81, 82, 68,
85
123
  27, 68, 35, 36, 37, 38, 39, 40, 41, 43,
86
- 42, 106, 26, 51, 52, 7, 44, 50, 25, 24,
124
+ 42, nil, 26, 51, 52, 7, 8, 50, 25, 24,
87
125
  nil, 81, 82, 81, 82, 68, 42, 68, 26, 67,
88
- 69, 72, 70, 71, 25, 24, 81, 82, 57, nil,
89
- 68, nil, nil, nil, 27, nil, 35, 36, 37, 38,
90
- 39, 40, 41, 43, 57, nil, nil, nil, nil, nil,
126
+ 69, 72, 70, 71, 25, 24, 81, 82, 65, nil,
127
+ 68, 7, 44, nil, 27, nil, 35, 36, 37, 38,
128
+ 39, 40, 41, 43, 55, nil, nil, nil, nil, nil,
91
129
  27, nil, 35, 36, 37, 38, 39, 40, 41, 43,
92
130
  42, nil, 26, nil, nil, nil, nil, nil, 25, 24,
93
131
  nil, nil, nil, 81, 82, nil, 42, 68, 26, 67,
94
- 69, 72, 70, 71, 25, 24, nil, nil, 65, nil,
132
+ 69, 72, 70, 71, 25, 24, nil, nil, 55, nil,
95
133
  nil, nil, nil, nil, 27, nil, 35, 36, 37, 38,
96
- 39, 40, 41, 43, 65, nil, nil, nil, nil, nil,
134
+ 39, 40, 41, 43, 55, nil, nil, nil, nil, nil,
97
135
  27, nil, 35, 36, 37, 38, 39, 40, 41, 43,
98
136
  42, nil, 26, nil, nil, nil, nil, nil, 25, 24,
99
137
  nil, nil, nil, 81, 82, nil, 42, 68, 26, 67,
100
- 69, 72, 70, 71, 25, 24, nil, nil, 57, nil,
138
+ 69, 72, 70, 71, 25, 24, nil, nil, 65, nil,
101
139
  nil, nil, nil, nil, 27, nil, 35, 36, 37, 38,
102
- 39, 40, 41, 43, 65, nil, nil, nil, nil, nil,
140
+ 39, 40, 41, 43, 55, nil, nil, nil, nil, nil,
103
141
  27, nil, 35, 36, 37, 38, 39, 40, 41, 43,
104
142
  42, nil, 26, nil, nil, nil, nil, nil, 25, 24,
105
143
  nil, nil, nil, 81, 82, nil, 42, 68, 26, 67,
106
- 69, 72, 70, 71, 25, 24, nil, nil, 57, nil,
144
+ 69, 72, 70, 71, 25, 24, nil, nil, 65, nil,
107
145
  nil, nil, nil, nil, 27, nil, 35, 36, 37, 38,
108
146
  39, 40, 41, 43, 65, nil, nil, nil, nil, nil,
109
147
  27, nil, 35, 36, 37, 38, 39, 40, 41, 43,
@@ -123,7 +161,7 @@ racc_action_table = [
123
161
  nil, nil, nil, nil, nil, nil, 42, nil, 26, nil,
124
162
  nil, nil, nil, nil, 25, 24, nil, nil, 65, nil,
125
163
  nil, nil, nil, nil, 27, nil, 35, 36, 37, 38,
126
- 39, 40, 41, 43, 57, nil, nil, nil, nil, nil,
164
+ 39, 40, 41, 43, 65, nil, nil, nil, nil, nil,
127
165
  27, nil, 35, 36, 37, 38, 39, 40, 41, 43,
128
166
  42, nil, 26, nil, nil, nil, nil, nil, 25, 24,
129
167
  nil, nil, nil, nil, nil, nil, 42, nil, 26, nil,
@@ -133,8 +171,8 @@ racc_action_table = [
133
171
  27, nil, 35, 36, 37, 38, 39, 40, 41, 43,
134
172
  42, nil, 26, nil, nil, nil, nil, nil, 25, 24,
135
173
  nil, nil, nil, nil, nil, nil, 42, nil, 26, nil,
136
- nil, nil, 21, 22, 25, 24, 12, 16, 18, 19,
137
- 95, 96, 97, nil, 27, nil, 35, 36, 37, 38,
174
+ nil, nil, 21, 22, 25, 24, 12, 14, 16, 93,
175
+ 18, 95, 96, nil, 27, nil, 35, 36, 37, 38,
138
176
  39, 40, 41, 43, 65, nil, nil, nil, nil, nil,
139
177
  27, nil, 35, 36, 37, 38, 39, 40, 41, 43,
140
178
  42, nil, 26, nil, nil, nil, nil, nil, 25, 24,
@@ -159,7 +197,7 @@ racc_action_table = [
159
197
  nil, nil, nil, nil, nil, nil, 42, nil, 26, nil,
160
198
  nil, nil, nil, nil, 25, 24, nil, nil, 65, nil,
161
199
  nil, nil, nil, nil, 27, nil, 35, 36, 37, 38,
162
- 39, 40, 41, 43, 57, nil, nil, nil, nil, nil,
200
+ 39, 40, 41, 43, 55, nil, nil, nil, nil, nil,
163
201
  27, 110, 35, 36, 37, 38, 39, 40, 41, 43,
164
202
  42, nil, 26, nil, nil, nil, nil, nil, 25, 24,
165
203
  nil, nil, nil, nil, nil, nil, 42, nil, 26, nil,
@@ -175,8 +213,8 @@ racc_action_table = [
175
213
  27, nil, 35, 36, 37, 38, 39, 40, 41, 43,
176
214
  42, nil, 26, nil, nil, nil, 81, 82, 25, 24,
177
215
  68, nil, 67, 69, 72, 70, 71, 75, 76, 77,
178
- 78, 79, 80, 73, 74, nil, nil, 16, 65, 19,
179
- nil, nil, nil, nil, 27, nil, 35, 36, 37, 38,
216
+ 78, 79, 80, 73, 74, nil, nil, 14, 65, nil,
217
+ 18, nil, nil, nil, 27, nil, 35, 36, 37, 38,
180
218
  39, 40, 41, 43, 81, 82, nil, nil, 68, nil,
181
219
  67, 69, 72, 70, 71, 75, 76, 77, 78, 79,
182
220
  80, 73, 74, 81, 82, nil, nil, 68, nil, 67,
@@ -188,54 +226,54 @@ racc_action_table = [
188
226
  81, 82, nil, nil, 68, nil, 67, 69, 72, 70,
189
227
  71, 75, 76, 77, 78, 79, 80, 73, 81, 82,
190
228
  nil, nil, 68, nil, 67, 69, 72, 70, 71, 75,
191
- 76, 77, 78, -92, -92, 81, 82, nil, nil, 68,
229
+ 76, 77, 78, 79, 80, 81, 82, nil, nil, 68,
192
230
  nil, 67, 69, 72, 70, 71, 75, 76, 77, 78,
193
- -92, -92, 81, 82, nil, nil, 68, nil, 67, 69,
194
- 72, 70, 71, 75, 76, 77, 78, 79, 80 ]
231
+ -93, -93, 81, 82, nil, nil, 68, nil, 67, 69,
232
+ 72, 70, 71, 75, 76, 77, 78, -93, -93 ]
195
233
 
196
234
  racc_action_check = [
197
235
  27, 1, 27, 91, 43, 111, 65, 106, 27, 27,
198
- 96, 18, 85, 85, 9, 9, 103, 57, 103, 57,
199
- 43, 65, 27, 27, 103, 103, 18, 91, 27, 1,
200
- 1, 94, 57, 89, 27, 27, 27, 27, 27, 27,
201
- 27, 27, 27, 27, 103, 93, 89, 92, 86, 86,
202
- 103, 81, 103, 103, 103, 103, 103, 103, 103, 103,
203
- 8, 86, 8, 84, 84, 59, 116, 116, 8, 8,
204
- 116, 58, 116, 116, 116, 127, 104, 128, 104, 0,
205
- 0, 15, 8, 8, 104, 104, 8, 8, 8, 8,
206
- 14, 117, 117, 10, 8, 117, 8, 8, 8, 8,
207
- 8, 8, 8, 8, 104, 114, 114, 83, 83, 114,
208
- 104, 83, 104, 104, 104, 104, 104, 104, 104, 104,
209
- 105, 139, 105, 13, 13, 45, 45, 13, 105, 105,
210
- nil, 113, 113, 122, 122, 113, 82, 122, 82, 122,
211
- 122, 122, 122, 122, 82, 82, 112, 112, 105, nil,
212
- 112, nil, nil, nil, 105, nil, 105, 105, 105, 105,
213
- 105, 105, 105, 105, 82, nil, nil, nil, nil, nil,
236
+ 97, 55, 96, 55, 85, 85, 93, 16, 93, 94,
237
+ 43, 65, 27, 27, 93, 93, 55, 91, 27, 1,
238
+ 1, 92, 16, 89, 27, 27, 27, 27, 27, 27,
239
+ 27, 27, 27, 27, 93, 81, 89, 57, 86, 86,
240
+ 93, 56, 93, 93, 93, 93, 93, 93, 93, 93,
241
+ 8, 86, 8, 9, 9, 127, 116, 116, 8, 8,
242
+ 116, 128, 116, 116, 116, 20, 103, 17, 103, 84,
243
+ 84, 10, 8, 8, 103, 103, 8, 8, 8, 139,
244
+ 8, 117, 117, nil, 8, 117, 8, 8, 8, 8,
245
+ 8, 8, 8, 8, 103, 114, 114, 83, 83, 114,
246
+ 103, 83, 103, 103, 103, 103, 103, 103, 103, 103,
247
+ 104, nil, 104, 13, 13, 0, 0, 13, 104, 104,
248
+ nil, 113, 113, 122, 122, 113, 105, 122, 105, 122,
249
+ 122, 122, 122, 122, 105, 105, 112, 112, 104, nil,
250
+ 112, 45, 45, nil, 104, nil, 104, 104, 104, 104,
251
+ 104, 104, 104, 104, 105, nil, nil, nil, nil, nil,
252
+ 105, nil, 105, 105, 105, 105, 105, 105, 105, 105,
253
+ 14, nil, 14, nil, nil, nil, nil, nil, 14, 14,
254
+ nil, nil, nil, 123, 123, nil, 82, 123, 82, 123,
255
+ 123, 123, 123, 123, 82, 82, nil, nil, 14, nil,
256
+ nil, nil, nil, nil, 14, nil, 14, 14, 14, 14,
257
+ 14, 14, 14, 14, 82, nil, nil, nil, nil, nil,
214
258
  82, nil, 82, 82, 82, 82, 82, 82, 82, 82,
215
259
  80, nil, 80, nil, nil, nil, nil, nil, 80, 80,
216
- nil, nil, nil, 123, 123, nil, 131, 123, 131, 123,
217
- 123, 123, 123, 123, 131, 131, nil, nil, 80, nil,
260
+ nil, nil, nil, 120, 120, nil, 18, 120, 18, 120,
261
+ 120, 120, 120, 120, 18, 18, nil, nil, 80, nil,
218
262
  nil, nil, nil, nil, 80, nil, 80, 80, 80, 80,
219
- 80, 80, 80, 80, 131, nil, nil, nil, nil, nil,
220
- 131, nil, 131, 131, 131, 131, 131, 131, 131, 131,
221
- 16, nil, 16, nil, nil, nil, nil, nil, 16, 16,
222
- nil, nil, nil, 121, 121, nil, 79, 121, 79, 121,
223
- 121, 121, 121, 121, 79, 79, nil, nil, 16, nil,
224
- nil, nil, nil, nil, 16, nil, 16, 16, 16, 16,
225
- 16, 16, 16, 16, 79, nil, nil, nil, nil, nil,
226
- 79, nil, 79, 79, 79, 79, 79, 79, 79, 79,
227
- 19, nil, 19, nil, nil, nil, nil, nil, 19, 19,
228
- nil, nil, nil, 120, 120, nil, 21, 120, 21, 120,
229
- 120, 120, 120, 120, 21, 21, nil, nil, 19, nil,
230
- nil, nil, nil, nil, 19, nil, 19, 19, 19, 19,
231
- 19, 19, 19, 19, 21, nil, nil, nil, nil, nil,
263
+ 80, 80, 80, 80, 18, nil, nil, nil, nil, nil,
264
+ 18, nil, 18, 18, 18, 18, 18, 18, 18, 18,
265
+ 131, nil, 131, nil, nil, nil, nil, nil, 131, 131,
266
+ nil, nil, nil, 121, 121, nil, 21, 121, 21, 121,
267
+ 121, 121, 121, 121, 21, 21, nil, nil, 131, nil,
268
+ nil, nil, nil, nil, 131, nil, 131, 131, 131, 131,
269
+ 131, 131, 131, 131, 21, nil, nil, nil, nil, nil,
232
270
  21, nil, 21, 21, 21, 21, 21, 21, 21, 21,
233
271
  22, nil, 22, nil, nil, nil, 115, 115, 22, 22,
234
- 115, nil, 115, 115, 115, nil, 78, nil, 78, nil,
235
- nil, nil, nil, nil, 78, 78, nil, nil, 22, nil,
272
+ 115, nil, 115, 115, 115, nil, 79, nil, 79, nil,
273
+ nil, nil, nil, nil, 79, 79, nil, nil, 22, nil,
236
274
  nil, nil, nil, nil, 22, nil, 22, 22, 22, 22,
237
- 22, 22, 22, 22, 78, nil, nil, nil, nil, nil,
238
- 78, nil, 78, 78, 78, 78, 78, 78, 78, 78,
275
+ 22, 22, 22, 22, 79, nil, nil, nil, nil, nil,
276
+ 79, nil, 79, 79, 79, 79, 79, 79, 79, 79,
239
277
  24, nil, 24, nil, nil, nil, nil, nil, 24, 24,
240
278
  nil, nil, nil, nil, nil, nil, 25, nil, 25, nil,
241
279
  nil, nil, nil, nil, 25, 25, nil, nil, 24, nil,
@@ -243,11 +281,11 @@ racc_action_check = [
243
281
  24, 24, 24, 24, 25, nil, nil, nil, nil, nil,
244
282
  25, nil, 25, 25, 25, 25, 25, 25, 25, 25,
245
283
  26, nil, 26, nil, nil, nil, nil, nil, 26, 26,
246
- nil, nil, nil, nil, nil, nil, 97, nil, 97, nil,
247
- nil, nil, nil, nil, 97, 97, nil, nil, 26, nil,
284
+ nil, nil, nil, nil, nil, nil, 78, nil, 78, nil,
285
+ nil, nil, nil, nil, 78, 78, nil, nil, 26, nil,
248
286
  nil, nil, nil, nil, 26, nil, 26, 26, 26, 26,
249
- 26, 26, 26, 26, 97, nil, nil, nil, nil, nil,
250
- 97, nil, 97, 97, 97, 97, 97, 97, 97, 97,
287
+ 26, 26, 26, 26, 78, nil, nil, nil, nil, nil,
288
+ 78, nil, 78, 78, 78, 78, 78, 78, 78, 78,
251
289
  42, nil, 42, nil, nil, nil, nil, nil, 42, 42,
252
290
  nil, nil, nil, nil, nil, nil, 77, nil, 77, nil,
253
291
  nil, nil, nil, nil, 77, 77, nil, nil, 42, nil,
@@ -279,11 +317,11 @@ racc_action_check = [
279
317
  73, 73, 73, 73, 72, nil, nil, nil, nil, nil,
280
318
  72, nil, 72, 72, 72, 72, 72, 72, 72, 72,
281
319
  70, nil, 70, nil, nil, nil, nil, nil, 70, 70,
282
- nil, nil, nil, nil, nil, nil, 62, nil, 62, nil,
283
- nil, nil, nil, nil, 62, 62, nil, nil, 70, nil,
320
+ nil, nil, nil, nil, nil, nil, 60, nil, 60, nil,
321
+ nil, nil, nil, nil, 60, 60, nil, nil, 70, nil,
284
322
  nil, nil, nil, nil, 70, nil, 70, 70, 70, 70,
285
- 70, 70, 70, 70, 62, nil, nil, nil, nil, nil,
286
- 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
323
+ 70, 70, 70, 70, 60, nil, nil, nil, nil, nil,
324
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
287
325
  71, nil, 71, nil, nil, nil, nil, nil, 71, 71,
288
326
  nil, nil, nil, nil, nil, nil, 67, nil, 67, nil,
289
327
  nil, nil, nil, nil, 67, 67, nil, nil, 71, nil,
@@ -296,97 +334,97 @@ racc_action_check = [
296
334
  nil, nil, nil, nil, 68, nil, 68, 68, 68, 68,
297
335
  68, 68, 68, 68, 69, nil, nil, nil, nil, nil,
298
336
  69, nil, 69, 69, 69, 69, 69, 69, 69, 69,
299
- 61, nil, 61, nil, nil, nil, 109, 109, 61, 61,
300
- 109, nil, 109, 109, 109, 109, 109, 109, 109, 109,
301
- 109, 109, 109, 109, 109, nil, nil, 61, 61, 61,
302
- nil, nil, nil, nil, 61, nil, 61, 61, 61, 61,
303
- 61, 61, 61, 61, 137, 137, nil, nil, 137, nil,
304
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
305
- 137, 137, 137, 56, 56, nil, nil, 56, nil, 56,
306
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
307
- 56, 56, 23, 23, nil, nil, 23, nil, 23, 23,
308
- 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
309
- 23, 138, 138, nil, nil, 138, nil, 138, 138, 138,
337
+ 59, nil, 59, nil, nil, nil, 137, 137, 59, 59,
338
+ 137, nil, 137, 137, 137, 137, 137, 137, 137, 137,
339
+ 137, 137, 137, 137, 137, nil, nil, 59, 59, nil,
340
+ 59, nil, nil, nil, 59, nil, 59, 59, 59, 59,
341
+ 59, 59, 59, 59, 138, 138, nil, nil, 138, nil,
310
342
  138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
343
+ 138, 138, 138, 54, 54, nil, nil, 54, nil, 54,
344
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
345
+ 54, 54, 109, 109, nil, nil, 109, nil, 109, 109,
346
+ 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
347
+ 109, 23, 23, nil, nil, 23, nil, 23, 23, 23,
348
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
311
349
  119, 119, nil, nil, 119, nil, 119, 119, 119, 119,
312
- 119, 119, 119, 119, 119, 119, 119, 119, 124, 124,
313
- nil, nil, 124, nil, 124, 124, 124, 124, 124, 124,
314
- 124, 124, 124, 124, 124, 125, 125, nil, nil, 125,
350
+ 119, 119, 119, 119, 119, 119, 119, 119, 118, 118,
351
+ nil, nil, 118, nil, 118, 118, 118, 118, 118, 118,
352
+ 118, 118, 118, 118, 118, 125, 125, nil, nil, 125,
315
353
  nil, 125, 125, 125, 125, 125, 125, 125, 125, 125,
316
- 125, 125, 118, 118, nil, nil, 118, nil, 118, 118,
317
- 118, 118, 118, 118, 118, 118, 118, 118, 118 ]
354
+ 125, 125, 124, 124, nil, nil, 124, nil, 124, 124,
355
+ 124, 124, 124, 124, 124, 124, 124, 124, 124 ]
318
356
 
319
357
  racc_action_pointer = [
320
- 51, 1, nil, nil, nil, nil, nil, nil, 56, -14,
321
- 93, nil, nil, 97, 60, 51, 236, nil, -12, 296,
322
- nil, 312, 356, 1099, 416, 432, 476, -4, nil, nil,
358
+ 97, 1, nil, nil, nil, nil, nil, nil, 56, 35,
359
+ 81, nil, nil, 97, 176, nil, -6, 47, 252, nil,
360
+ 45, 312, 356, 1118, 416, 432, 476, -4, nil, nil,
323
361
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
324
- nil, nil, 536, -28, 596, 97, nil, nil, nil, nil,
325
- nil, 656, 672, nil, nil, nil, 1080, -6, 47, 41,
326
- nil, 1016, 852, nil, nil, -17, nil, 912, 956, 972,
327
- 836, 896, 792, 776, 732, 716, 612, 552, 372, 252,
328
- 176, 19, 132, 104, 60, 9, 22, nil, nil, 9,
329
- nil, -21, 22, 15, 1, nil, -23, 492, nil, nil,
330
- nil, nil, nil, 12, 72, 116, -25, nil, nil, 1023,
331
- nil, -34, 143, 128, 102, 363, 63, 88, 1189, 1137,
332
- 310, 250, 130, 190, 1155, 1172, nil, 37, 40, nil,
333
- nil, 192, nil, nil, nil, nil, nil, 1061, 1118, 97,
362
+ nil, nil, 536, -28, 596, 123, nil, nil, nil, nil,
363
+ nil, 656, 672, nil, 1080, -12, 27, 23, nil, 1016,
364
+ 852, nil, nil, nil, nil, -17, nil, 912, 956, 972,
365
+ 836, 896, 792, 776, 732, 716, 612, 552, 492, 372,
366
+ 236, 13, 192, 104, 76, 11, 22, nil, nil, 9,
367
+ nil, -21, 6, 12, -11, nil, -22, -20, nil, nil,
368
+ nil, nil, nil, 72, 116, 132, -25, nil, nil, 1099,
369
+ nil, -34, 143, 128, 102, 363, 63, 88, 1155, 1137,
370
+ 250, 310, 130, 190, 1189, 1172, nil, 27, 34, nil,
371
+ nil, 296, nil, nil, nil, nil, nil, 1023, 1061, 65,
334
372
  nil, nil, nil ]
335
373
 
336
374
  racc_action_default = [
337
- -92, -92, -2, -3, -4, -5, -6, -7, -92, -92,
338
- -92, -1, -8, -92, -92, -92, -20, -22, -89, -24,
339
- -26, -35, -39, -40, -92, -92, -92, -92, -63, -64,
340
- -65, -66, -67, -68, -69, -70, -71, -72, -73, -74,
341
- -75, -76, -92, -92, -92, -92, -15, -16, -17, 143,
342
- -9, -33, -37, -10, -11, -21, -80, -89, -87, -88,
343
- -84, -92, -92, -25, -34, -89, -38, -92, -92, -92,
344
- -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
345
- -92, -92, -92, -47, -48, -57, -92, -61, -77, -92,
346
- -81, -92, -92, -92, -92, -28, -92, -30, -13, -14,
347
- -18, -32, -36, -92, -92, -92, -92, -23, -27, -58,
348
- -90, -92, -41, -42, -43, -44, -45, -46, -49, -50,
349
- -51, -52, -53, -54, -55, -56, -59, -89, -92, -62,
350
- -78, -92, -82, -12, -19, -29, -31, -85, -79, -86,
351
- -83, -91, -60 ]
375
+ -93, -93, -2, -3, -4, -5, -6, -7, -93, -93,
376
+ -93, -1, -8, -93, -10, -12, -90, -93, -18, -20,
377
+ -93, -36, -40, -41, -93, -93, -93, -93, -64, -65,
378
+ -66, -67, -68, -69, -70, -71, -72, -73, -74, -75,
379
+ -76, -77, -93, -93, -93, -93, -29, -30, -31, 143,
380
+ -9, -34, -38, -11, -81, -90, -88, -89, -85, -93,
381
+ -93, -14, -19, -25, -35, -90, -39, -93, -93, -93,
382
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
383
+ -93, -93, -93, -48, -49, -58, -93, -62, -78, -93,
384
+ -82, -93, -93, -15, -93, -22, -24, -93, -27, -28,
385
+ -32, -33, -37, -93, -93, -93, -93, -13, -21, -59,
386
+ -91, -93, -42, -43, -44, -45, -46, -47, -50, -51,
387
+ -52, -53, -54, -55, -56, -57, -60, -90, -93, -63,
388
+ -79, -93, -83, -16, -17, -23, -26, -86, -80, -87,
389
+ -84, -92, -61 ]
352
390
 
353
391
  racc_goto_table = [
354
- 56, 55, 48, 56, 63, 47, 91, 107, 83, 84,
355
- 85, 94, 64, 66, 45, 108, 93, 126, 86, 89,
356
- 2, 11, 1, 140, nil, nil, 56, nil, nil, 46,
357
- nil, nil, nil, nil, nil, nil, nil, nil, 100, nil,
358
- nil, 99, 101, 102, nil, 109, 56, 111, nil, nil,
359
- nil, 112, 113, 114, 115, 116, 117, 118, 119, 120,
360
- 121, 122, 123, 124, 125, 98, 56, 128, 139, nil,
361
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
362
- nil, 56, 136, nil, nil, nil, nil, 109, 137, 138,
363
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
392
+ 54, 53, 47, 48, 54, 62, 2, 11, 91, 97,
393
+ 83, 84, 85, 64, 66, 46, 108, 94, 45, 86,
394
+ 107, 126, 89, 1, 140, nil, nil, nil, 54, nil,
395
+ nil, nil, nil, nil, nil, nil, nil, nil, 99, 100,
396
+ nil, nil, nil, 101, 102, 109, 54, 111, nil, nil,
397
+ nil, 98, nil, 112, 113, 114, 115, 116, 117, 118,
398
+ 119, 120, 121, 122, 123, 124, 125, nil, 54, 128,
399
+ 139, nil, nil, nil, nil, nil, nil, nil, nil, 54,
400
+ 133, nil, nil, nil, nil, nil, nil, nil, nil, 109,
401
+ 137, 138, nil, nil, nil, nil, nil, nil, nil, nil,
364
402
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
365
- nil, nil, nil, nil, nil, 138 ]
403
+ nil, nil, nil, nil, nil, nil, nil, 138 ]
366
404
 
367
405
  racc_goto_check = [
368
- 19, 17, 11, 19, 17, 14, 28, 16, 19, 19,
369
- 19, 15, 7, 7, 13, 18, 12, 20, 7, 27,
370
- 2, 2, 1, 29, nil, nil, 19, nil, nil, 2,
371
- nil, nil, nil, nil, nil, nil, nil, nil, 11, nil,
372
- nil, 14, 7, 7, nil, 19, 19, 17, nil, nil,
373
- nil, 19, 19, 19, 19, 19, 19, 19, 19, 19,
374
- 19, 19, 19, 19, 19, 2, 19, 17, 28, nil,
375
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
376
- nil, 19, 17, nil, nil, nil, nil, 19, 19, 19,
377
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
406
+ 19, 9, 12, 17, 19, 9, 2, 2, 28, 15,
407
+ 19, 19, 19, 7, 7, 2, 13, 11, 18, 7,
408
+ 8, 20, 27, 1, 29, nil, nil, nil, 19, nil,
409
+ nil, nil, nil, nil, nil, nil, nil, nil, 12, 17,
410
+ nil, nil, nil, 7, 7, 19, 19, 9, nil, nil,
411
+ nil, 2, nil, 19, 19, 19, 19, 19, 19, 19,
412
+ 19, 19, 19, 19, 19, 19, 19, nil, 19, 9,
413
+ 28, nil, nil, nil, nil, nil, nil, nil, nil, 19,
414
+ 9, nil, nil, nil, nil, nil, nil, nil, nil, 19,
415
+ 19, 19, nil, nil, nil, nil, nil, nil, nil, nil,
378
416
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
379
- nil, nil, nil, nil, nil, 19 ]
417
+ nil, nil, nil, nil, nil, nil, nil, 19 ]
380
418
 
381
419
  racc_goto_pointer = [
382
- nil, 22, 20, nil, nil, nil, nil, -9, nil, nil,
383
- nil, -7, -28, 5, -4, -33, -54, -15, -46, -16,
384
- -64, nil, nil, nil, nil, nil, nil, -23, -37, -83 ]
420
+ nil, 23, 6, nil, nil, nil, nil, -8, -39, -13,
421
+ nil, -27, -7, -43, nil, -35, nil, -6, 9, -14,
422
+ -60, nil, nil, nil, nil, nil, nil, -20, -35, -82 ]
385
423
 
386
424
  racc_goto_default = [
387
- nil, nil, nil, 3, 4, 5, 6, 13, 14, 9,
388
- 15, nil, nil, nil, nil, nil, 17, nil, 20, 23,
389
- 34, 28, 29, 30, 31, 32, 33, 58, 59, 60 ]
425
+ nil, nil, nil, 3, 4, 5, 6, 13, 15, nil,
426
+ 17, nil, nil, 19, 20, nil, 9, nil, nil, 23,
427
+ 34, 28, 29, 30, 31, 32, 33, 56, 57, 58 ]
390
428
 
391
429
  racc_reduce_table = [
392
430
  0, 0, :racc_error,
@@ -397,48 +435,48 @@ racc_reduce_table = [
397
435
  1, 51, :_reduce_none,
398
436
  1, 51, :_reduce_none,
399
437
  1, 52, :_reduce_7,
400
- 2, 55, :_reduce_8,
401
- 3, 55, :_reduce_9,
402
- 3, 53, :_reduce_10,
403
- 3, 58, :_reduce_11,
404
- 3, 60, :_reduce_none,
405
- 2, 62, :_reduce_13,
406
- 2, 62, :_reduce_14,
407
- 1, 62, :_reduce_15,
408
- 1, 62, :_reduce_16,
409
- 2, 54, :_reduce_none,
410
- 3, 54, :_reduce_18,
411
- 3, 63, :_reduce_19,
412
- 1, 65, :_reduce_20,
413
- 2, 65, :_reduce_21,
414
- 1, 57, :_reduce_22,
415
- 3, 57, :_reduce_23,
416
- 1, 67, :_reduce_24,
417
- 2, 67, :_reduce_25,
418
- 1, 59, :_reduce_26,
419
- 3, 59, :_reduce_27,
420
- 1, 61, :_reduce_none,
421
- 2, 61, :_reduce_none,
422
- 1, 64, :_reduce_30,
423
- 2, 64, :_reduce_31,
424
- 3, 56, :_reduce_32,
425
- 2, 56, :_reduce_none,
438
+ 2, 53, :_reduce_8,
439
+ 3, 53, :_reduce_9,
440
+ 1, 57, :_reduce_10,
441
+ 2, 57, :_reduce_11,
442
+ 1, 59, :_reduce_none,
443
+ 3, 59, :_reduce_13,
444
+ 3, 55, :_reduce_14,
445
+ 1, 60, :_reduce_15,
446
+ 2, 60, :_reduce_16,
447
+ 3, 61, :_reduce_17,
448
+ 1, 62, :_reduce_18,
449
+ 2, 62, :_reduce_19,
450
+ 1, 63, :_reduce_none,
451
+ 3, 63, :_reduce_21,
452
+ 1, 64, :_reduce_none,
453
+ 2, 64, :_reduce_23,
454
+ 1, 64, :_reduce_none,
455
+ 3, 65, :_reduce_25,
456
+ 3, 66, :_reduce_26,
457
+ 2, 67, :_reduce_27,
458
+ 2, 67, :_reduce_28,
459
+ 1, 67, :_reduce_29,
460
+ 1, 67, :_reduce_30,
461
+ 2, 54, :_reduce_31,
462
+ 3, 54, :_reduce_32,
463
+ 3, 56, :_reduce_33,
426
464
  2, 56, :_reduce_34,
427
- 1, 56, :_reduce_35,
428
- 3, 56, :_reduce_36,
429
- 2, 56, :_reduce_none,
465
+ 2, 56, :_reduce_35,
466
+ 1, 56, :_reduce_36,
467
+ 3, 56, :_reduce_37,
430
468
  2, 56, :_reduce_38,
431
- 1, 56, :_reduce_39,
469
+ 2, 56, :_reduce_39,
432
470
  1, 56, :_reduce_40,
433
- 3, 68, :_reduce_41,
471
+ 1, 56, :_reduce_41,
434
472
  3, 68, :_reduce_42,
435
473
  3, 68, :_reduce_43,
436
474
  3, 68, :_reduce_44,
437
475
  3, 68, :_reduce_45,
438
476
  3, 68, :_reduce_46,
439
- 2, 68, :_reduce_47,
477
+ 3, 68, :_reduce_47,
440
478
  2, 68, :_reduce_48,
441
- 3, 68, :_reduce_49,
479
+ 2, 68, :_reduce_49,
442
480
  3, 68, :_reduce_50,
443
481
  3, 68, :_reduce_51,
444
482
  3, 68, :_reduce_52,
@@ -446,12 +484,13 @@ racc_reduce_table = [
446
484
  3, 68, :_reduce_54,
447
485
  3, 68, :_reduce_55,
448
486
  3, 68, :_reduce_56,
449
- 2, 68, :_reduce_57,
450
- 3, 68, :_reduce_58,
487
+ 3, 68, :_reduce_57,
488
+ 2, 68, :_reduce_58,
451
489
  3, 68, :_reduce_59,
452
- 4, 68, :_reduce_60,
453
- 2, 68, :_reduce_61,
454
- 3, 68, :_reduce_62,
490
+ 3, 68, :_reduce_60,
491
+ 4, 68, :_reduce_61,
492
+ 2, 68, :_reduce_62,
493
+ 3, 68, :_reduce_63,
455
494
  1, 68, :_reduce_none,
456
495
  1, 70, :_reduce_none,
457
496
  1, 70, :_reduce_none,
@@ -466,23 +505,23 @@ racc_reduce_table = [
466
505
  1, 72, :_reduce_none,
467
506
  1, 73, :_reduce_none,
468
507
  1, 73, :_reduce_none,
469
- 2, 74, :_reduce_77,
470
- 3, 74, :_reduce_78,
471
- 3, 76, :_reduce_79,
472
- 1, 76, :_reduce_80,
473
- 2, 75, :_reduce_81,
474
- 3, 75, :_reduce_82,
475
- 3, 77, :_reduce_83,
476
- 1, 77, :_reduce_84,
477
- 3, 78, :_reduce_85,
478
- 3, 66, :_reduce_86,
479
- 1, 66, :_reduce_none,
480
- 1, 66, :_reduce_88,
481
- 1, 69, :_reduce_89,
482
- 3, 69, :_reduce_90,
483
- 4, 69, :_reduce_91 ]
484
-
485
- racc_reduce_n = 92
508
+ 2, 74, :_reduce_78,
509
+ 3, 74, :_reduce_79,
510
+ 3, 76, :_reduce_80,
511
+ 1, 76, :_reduce_81,
512
+ 2, 75, :_reduce_82,
513
+ 3, 75, :_reduce_83,
514
+ 3, 77, :_reduce_84,
515
+ 1, 77, :_reduce_85,
516
+ 3, 78, :_reduce_86,
517
+ 3, 58, :_reduce_87,
518
+ 1, 58, :_reduce_none,
519
+ 1, 58, :_reduce_89,
520
+ 1, 69, :_reduce_90,
521
+ 3, 69, :_reduce_91,
522
+ 4, 69, :_reduce_92 ]
523
+
524
+ racc_reduce_n = 93
486
525
 
487
526
  racc_shift_n = 143
488
527
 
@@ -520,10 +559,10 @@ racc_token_table = {
520
559
  :TCLOSE => 30,
521
560
  :COMMAND => 31,
522
561
  :IDENTIFER => 32,
523
- :BLOCK => 33,
524
- :ENDBLOCK => 34,
525
- :END => 35,
526
- :SUBCOMMAND => 36,
562
+ :SUBCOMMAND => 33,
563
+ :BLOCK => 34,
564
+ :ENDBLOCK => 35,
565
+ :END => 36,
527
566
  :ACLOSE => 37,
528
567
  :POPEN => 38,
529
568
  :PCLOSE => 39,
@@ -591,10 +630,10 @@ Racc_token_to_s_table = [
591
630
  "TCLOSE",
592
631
  "COMMAND",
593
632
  "IDENTIFER",
633
+ "SUBCOMMAND",
594
634
  "BLOCK",
595
635
  "ENDBLOCK",
596
636
  "END",
597
- "SUBCOMMAND",
598
637
  "ACLOSE",
599
638
  "POPEN",
600
639
  "PCLOSE",
@@ -611,21 +650,21 @@ Racc_token_to_s_table = [
611
650
  "document",
612
651
  "document_unit",
613
652
  "template",
614
- "command_tag",
615
- "block_tag",
616
653
  "tag",
654
+ "block_tag",
655
+ "command_tag",
617
656
  "sequence",
618
- "assigned_command",
657
+ "command_body",
658
+ "arguments",
659
+ "command",
660
+ "subcommand",
661
+ "subcommand_tag",
662
+ "block_body",
619
663
  "block_open",
620
- "assigned_block",
621
664
  "block_close",
622
- "endblock",
623
- "block_body",
624
- "subcommand_tag",
625
- "subcommand",
626
- "command",
627
- "arguments",
628
- "block",
665
+ "block_open_tag",
666
+ "block_close_tag",
667
+ "block_subnodes",
629
668
  "expr",
630
669
  "method",
631
670
  "value",
@@ -638,7 +677,7 @@ Racc_token_to_s_table = [
638
677
  "pairs",
639
678
  "pair" ]
640
679
 
641
- Racc_debug_parser = true
680
+ Racc_debug_parser = false
642
681
 
643
682
  ##### State transition tables end #####
644
683
 
@@ -646,14 +685,14 @@ Racc_debug_parser = true
646
685
 
647
686
  module_eval(<<'.,.,', 'parser.y', 54)
648
687
  def _reduce_1(val, _values, result)
649
- val[0].children.push(val[1])
688
+ pospoppush(2); val[0].children.push(val[1])
650
689
  result
651
690
  end
652
691
  .,.,
653
692
 
654
693
  module_eval(<<'.,.,', 'parser.y', 55)
655
694
  def _reduce_2(val, _values, result)
656
- result = Joiner.build :JOINER, val[0]
695
+ result = build Joiner, :JOINER, val[0], position: pospoppush(1)
657
696
  result
658
697
  end
659
698
  .,.,
@@ -675,382 +714,406 @@ module_eval(<<'.,.,', 'parser.y', 58)
675
714
 
676
715
  module_eval(<<'.,.,', 'parser.y', 59)
677
716
  def _reduce_8(val, _values, result)
678
- result = Tag.build :TAG, mode: TAG_MODES[val[0]]
717
+ result = build Tag, :TAG, mode: TAG_MODES[val[0]], position: pospoppush(2)
679
718
  result
680
719
  end
681
720
  .,.,
682
721
 
683
- module_eval(<<'.,.,', 'parser.y', 60)
722
+ module_eval(<<'.,.,', 'parser.y', 61)
684
723
  def _reduce_9(val, _values, result)
685
- result = Tag.build :TAG, *val[1].flatten, mode: TAG_MODES[val[0]]
724
+ result = build Tag, :TAG, *Array.wrap(val[1]).flatten, mode: TAG_MODES[val[0]], position: pospoppush(3)
725
+
686
726
  result
687
727
  end
688
728
  .,.,
689
729
 
690
- module_eval(<<'.,.,', 'parser.y', 63)
730
+ module_eval(<<'.,.,', 'parser.y', 64)
691
731
  def _reduce_10(val, _values, result)
692
- command = val[1][:command]
693
- assign = val[1][:assign]
694
- command.options[:mode] = TAG_MODES[val[0]]
695
- command.options[:assign] = assign if assign
696
- command.validate!
697
- result = command
698
-
732
+ result = build @commands[val[0]] || Command, val[0], position: pospoppush(1)
699
733
  result
700
734
  end
701
735
  .,.,
702
736
 
703
- module_eval(<<'.,.,', 'parser.y', 71)
737
+ module_eval(<<'.,.,', 'parser.y', 66)
704
738
  def _reduce_11(val, _values, result)
705
- block = val[1][:block]
706
- assign = val[1][:assign]
707
- block.options[:mode] = TAG_MODES[val[0]]
708
- block.options[:assign] = assign if assign
709
- result = block
710
-
739
+ result = build @commands[val[0]] || Command, val[0], *val[1], position: pospoppush(2)
740
+
711
741
  result
712
742
  end
713
743
  .,.,
714
744
 
715
745
  # reduce 12 omitted
716
746
 
717
- module_eval(<<'.,.,', 'parser.y', 79)
747
+ module_eval(<<'.,.,', 'parser.y', 70)
718
748
  def _reduce_13(val, _values, result)
719
- val[0][-1].is_a?(Joiner) ?
720
- val[0][-1].children.push(val[1]) :
721
- val[0].push(Joiner.build(:JOINER, val[1]))
722
-
749
+ result = build Assigner, val[0], val[2], position: pospoppush(3)
750
+
723
751
  result
724
752
  end
725
753
  .,.,
726
754
 
727
- module_eval(<<'.,.,', 'parser.y', 83)
755
+ module_eval(<<'.,.,', 'parser.y', 73)
728
756
  def _reduce_14(val, _values, result)
729
- val[0].push(val[1])
757
+ command = val[1].is_a?(Command) ? val[1] : val[1].children[0]
758
+ command.validate!
759
+ result = build Tag, :TAG, val[1], mode: TAG_MODES[val[0]], position: pospoppush(3)
760
+
730
761
  result
731
762
  end
732
763
  .,.,
733
764
 
734
- module_eval(<<'.,.,', 'parser.y', 84)
765
+ module_eval(<<'.,.,', 'parser.y', 78)
735
766
  def _reduce_15(val, _values, result)
736
- result = [Joiner.build(:JOINER, val[0])]
767
+ result = build @substack.last[val[0]], val[0], position: pospoppush(1)
737
768
  result
738
769
  end
739
770
  .,.,
740
771
 
741
- module_eval(<<'.,.,', 'parser.y', 85)
772
+ module_eval(<<'.,.,', 'parser.y', 80)
742
773
  def _reduce_16(val, _values, result)
743
- result = [val[0]]
774
+ result = build @substack.last[val[0]], val[0], *val[1], position: pospoppush(2)
775
+
744
776
  result
745
777
  end
746
778
  .,.,
747
779
 
748
- # reduce 17 omitted
749
-
750
- module_eval(<<'.,.,', 'parser.y', 87)
751
- def _reduce_18(val, _values, result)
752
- val[0].options[:subnodes] = val[1]; val[0].validate!
780
+ module_eval(<<'.,.,', 'parser.y', 82)
781
+ def _reduce_17(val, _values, result)
782
+ pospoppush(3); result = val[1]
753
783
  result
754
784
  end
755
785
  .,.,
756
786
 
757
- module_eval(<<'.,.,', 'parser.y', 88)
758
- def _reduce_19(val, _values, result)
759
- result = val[1]
787
+ module_eval(<<'.,.,', 'parser.y', 84)
788
+ def _reduce_18(val, _values, result)
789
+ result = build @blocks[val[0]] || Block, val[0], position: pospoppush(1)
760
790
  result
761
791
  end
762
792
  .,.,
763
793
 
764
- module_eval(<<'.,.,', 'parser.y', 90)
765
- def _reduce_20(val, _values, result)
766
- result = Command.build val[0]
794
+ module_eval(<<'.,.,', 'parser.y', 86)
795
+ def _reduce_19(val, _values, result)
796
+ result = build @blocks[val[0]] || Block, val[0], *val[1], position: pospoppush(2)
797
+
767
798
  result
768
799
  end
769
800
  .,.,
770
801
 
771
- module_eval(<<'.,.,', 'parser.y', 91)
802
+ # reduce 20 omitted
803
+
804
+ module_eval(<<'.,.,', 'parser.y', 90)
772
805
  def _reduce_21(val, _values, result)
773
- result = Command.build val[0], *val[1]
806
+ result = build Assigner, val[0], val[2], position: pospoppush(3)
807
+
774
808
  result
775
809
  end
776
810
  .,.,
777
811
 
778
- module_eval(<<'.,.,', 'parser.y', 92)
779
- def _reduce_22(val, _values, result)
780
- result = { command: val[0] }
781
- result
782
- end
783
- .,.,
812
+ # reduce 22 omitted
784
813
 
785
814
  module_eval(<<'.,.,', 'parser.y', 93)
786
815
  def _reduce_23(val, _values, result)
787
- result = { command: val[2], assign: val[0] }
816
+ pospoppush(2)
788
817
  result
789
818
  end
790
819
  .,.,
791
820
 
792
- module_eval(<<'.,.,', 'parser.y', 94)
793
- def _reduce_24(val, _values, result)
794
- result = Block.build val[0]
795
- result
796
- end
797
- .,.,
821
+ # reduce 24 omitted
798
822
 
799
- module_eval(<<'.,.,', 'parser.y', 95)
823
+ module_eval(<<'.,.,', 'parser.y', 96)
800
824
  def _reduce_25(val, _values, result)
801
- result = Block.build val[0], *val[1]
825
+ result = build Tag, :TAG, val[1], mode: TAG_MODES[val[0]], position: pospoppush(3)
826
+
802
827
  result
803
828
  end
804
829
  .,.,
805
830
 
806
- module_eval(<<'.,.,', 'parser.y', 96)
831
+ module_eval(<<'.,.,', 'parser.y', 98)
807
832
  def _reduce_26(val, _values, result)
808
- result = { block: val[0] }
833
+ pospoppush(3)
809
834
  result
810
835
  end
811
836
  .,.,
812
837
 
813
- module_eval(<<'.,.,', 'parser.y', 97)
838
+ module_eval(<<'.,.,', 'parser.y', 100)
814
839
  def _reduce_27(val, _values, result)
815
- result = { block: val[2], assign: val[0] }
840
+ pospoppush(2)
841
+ val[0][-1].is_a?(Joiner) ?
842
+ val[0][-1].children.push(val[1]) :
843
+ val[0].push(build(Joiner, :JOINER, val[1]))
844
+
816
845
  result
817
846
  end
818
847
  .,.,
819
848
 
820
- # reduce 28 omitted
849
+ module_eval(<<'.,.,', 'parser.y', 105)
850
+ def _reduce_28(val, _values, result)
851
+ pospoppush(2); val[0].push(val[1])
852
+ result
853
+ end
854
+ .,.,
821
855
 
822
- # reduce 29 omitted
856
+ module_eval(<<'.,.,', 'parser.y', 106)
857
+ def _reduce_29(val, _values, result)
858
+ result = [build(Joiner, :JOINER, val[0], position: pospoppush(1))]
859
+ result
860
+ end
861
+ .,.,
823
862
 
824
- module_eval(<<'.,.,', 'parser.y', 100)
863
+ module_eval(<<'.,.,', 'parser.y', 107)
825
864
  def _reduce_30(val, _values, result)
826
- result = { name: val[0] }
865
+ result = [val[0]]
827
866
  result
828
867
  end
829
868
  .,.,
830
869
 
831
- module_eval(<<'.,.,', 'parser.y', 101)
870
+ module_eval(<<'.,.,', 'parser.y', 109)
832
871
  def _reduce_31(val, _values, result)
833
- result = { name: val[0], args: Arrayer.build(:ARRAY, *val[1]) }
872
+ pospoppush(2)
873
+ block = val[0].children[0].is_a?(Block) ?
874
+ val[0].children[0] : val[0].children[0].children[0]
875
+ block.validate!
876
+
834
877
  result
835
878
  end
836
879
  .,.,
837
880
 
838
- module_eval(<<'.,.,', 'parser.y', 103)
881
+ module_eval(<<'.,.,', 'parser.y', 115)
839
882
  def _reduce_32(val, _values, result)
840
- result = val[0].push(val[2])
883
+ pospoppush(3)
884
+ block = val[0].children[0].is_a?(Block) ?
885
+ val[0].children[0] : val[0].children[0].children[0]
886
+ block.options[:subnodes] = val[1]
887
+ block.validate!
888
+
841
889
  result
842
890
  end
843
891
  .,.,
844
892
 
845
- # reduce 33 omitted
893
+ module_eval(<<'.,.,', 'parser.y', 122)
894
+ def _reduce_33(val, _values, result)
895
+ pospoppush(2); result = val[0].push(val[2])
896
+ result
897
+ end
898
+ .,.,
846
899
 
847
- module_eval(<<'.,.,', 'parser.y', 105)
900
+ module_eval(<<'.,.,', 'parser.y', 123)
848
901
  def _reduce_34(val, _values, result)
849
- result = val[1]
902
+ pospoppush(2)
850
903
  result
851
904
  end
852
905
  .,.,
853
906
 
854
- module_eval(<<'.,.,', 'parser.y', 106)
907
+ module_eval(<<'.,.,', 'parser.y', 124)
855
908
  def _reduce_35(val, _values, result)
856
- result = []
909
+ pospoppush(2, 1); result = val[1]
857
910
  result
858
911
  end
859
912
  .,.,
860
913
 
861
- module_eval(<<'.,.,', 'parser.y', 107)
914
+ module_eval(<<'.,.,', 'parser.y', 125)
862
915
  def _reduce_36(val, _values, result)
863
- result = val[0].push(val[2])
916
+ result = []
864
917
  result
865
918
  end
866
919
  .,.,
867
920
 
868
- # reduce 37 omitted
921
+ module_eval(<<'.,.,', 'parser.y', 126)
922
+ def _reduce_37(val, _values, result)
923
+ pospoppush(2); result = val[0].push(val[2])
924
+ result
925
+ end
926
+ .,.,
869
927
 
870
- module_eval(<<'.,.,', 'parser.y', 109)
928
+ module_eval(<<'.,.,', 'parser.y', 127)
871
929
  def _reduce_38(val, _values, result)
872
- result = val[1]
930
+ pospoppush(2)
873
931
  result
874
932
  end
875
933
  .,.,
876
934
 
877
- module_eval(<<'.,.,', 'parser.y', 110)
935
+ module_eval(<<'.,.,', 'parser.y', 128)
878
936
  def _reduce_39(val, _values, result)
879
- result = []
937
+ pospoppush(2, 1); result = val[1]
880
938
  result
881
939
  end
882
940
  .,.,
883
941
 
884
- module_eval(<<'.,.,', 'parser.y', 111)
942
+ module_eval(<<'.,.,', 'parser.y', 129)
885
943
  def _reduce_40(val, _values, result)
886
- result = [val[0]]
944
+ result = []
887
945
  result
888
946
  end
889
947
  .,.,
890
948
 
891
- module_eval(<<'.,.,', 'parser.y', 113)
949
+ module_eval(<<'.,.,', 'parser.y', 130)
892
950
  def _reduce_41(val, _values, result)
893
- result = Calculator.build :MULTIPLY, val[0], val[2]
951
+ result = [val[0]]
894
952
  result
895
953
  end
896
954
  .,.,
897
955
 
898
- module_eval(<<'.,.,', 'parser.y', 114)
956
+ module_eval(<<'.,.,', 'parser.y', 132)
899
957
  def _reduce_42(val, _values, result)
900
- result = Calculator.build :POWER, val[0], val[2]
958
+ result = build Calculator, :MULTIPLY, val[0], val[2], position: pospoppush(3)
901
959
  result
902
960
  end
903
961
  .,.,
904
962
 
905
- module_eval(<<'.,.,', 'parser.y', 115)
963
+ module_eval(<<'.,.,', 'parser.y', 133)
906
964
  def _reduce_43(val, _values, result)
907
- result = Calculator.build :DIVIDE, val[0], val[2]
965
+ result = build Calculator, :POWER, val[0], val[2], position: pospoppush(3)
908
966
  result
909
967
  end
910
968
  .,.,
911
969
 
912
- module_eval(<<'.,.,', 'parser.y', 116)
970
+ module_eval(<<'.,.,', 'parser.y', 134)
913
971
  def _reduce_44(val, _values, result)
914
- result = Calculator.build :PLUS, val[0], val[2]
972
+ result = build Calculator, :DIVIDE, val[0], val[2], position: pospoppush(3)
915
973
  result
916
974
  end
917
975
  .,.,
918
976
 
919
- module_eval(<<'.,.,', 'parser.y', 117)
977
+ module_eval(<<'.,.,', 'parser.y', 135)
920
978
  def _reduce_45(val, _values, result)
921
- result = Calculator.build :MINUS, val[0], val[2]
979
+ result = build Calculator, :PLUS, val[0], val[2], position: pospoppush(3)
922
980
  result
923
981
  end
924
982
  .,.,
925
983
 
926
- module_eval(<<'.,.,', 'parser.y', 118)
984
+ module_eval(<<'.,.,', 'parser.y', 136)
927
985
  def _reduce_46(val, _values, result)
928
- result = Calculator.build :MODULO, val[0], val[2]
986
+ result = build Calculator, :MINUS, val[0], val[2], position: pospoppush(3)
929
987
  result
930
988
  end
931
989
  .,.,
932
990
 
933
- module_eval(<<'.,.,', 'parser.y', 119)
991
+ module_eval(<<'.,.,', 'parser.y', 137)
934
992
  def _reduce_47(val, _values, result)
935
- result = Calculator.build :UMINUS, val[1]
993
+ result = build Calculator, :MODULO, val[0], val[2], position: pospoppush(3)
936
994
  result
937
995
  end
938
996
  .,.,
939
997
 
940
- module_eval(<<'.,.,', 'parser.y', 120)
998
+ module_eval(<<'.,.,', 'parser.y', 138)
941
999
  def _reduce_48(val, _values, result)
942
- result = Calculator.build :UPLUS, val[1]
1000
+ result = build Calculator, :UMINUS, val[1], position: pospoppush(2)
943
1001
  result
944
1002
  end
945
1003
  .,.,
946
1004
 
947
- module_eval(<<'.,.,', 'parser.y', 121)
1005
+ module_eval(<<'.,.,', 'parser.y', 139)
948
1006
  def _reduce_49(val, _values, result)
949
- result = Calculator.build :AND, val[0], val[2]
1007
+ result = build Calculator, :UPLUS, val[1], position: pospoppush(2)
950
1008
  result
951
1009
  end
952
1010
  .,.,
953
1011
 
954
- module_eval(<<'.,.,', 'parser.y', 122)
1012
+ module_eval(<<'.,.,', 'parser.y', 140)
955
1013
  def _reduce_50(val, _values, result)
956
- result = Calculator.build :OR, val[0], val[2]
1014
+ result = build Calculator, :AND, val[0], val[2], position: pospoppush(3)
957
1015
  result
958
1016
  end
959
1017
  .,.,
960
1018
 
961
- module_eval(<<'.,.,', 'parser.y', 123)
1019
+ module_eval(<<'.,.,', 'parser.y', 141)
962
1020
  def _reduce_51(val, _values, result)
963
- result = Calculator.build :GT, val[0], val[2]
1021
+ result = build Calculator, :OR, val[0], val[2], position: pospoppush(3)
964
1022
  result
965
1023
  end
966
1024
  .,.,
967
1025
 
968
- module_eval(<<'.,.,', 'parser.y', 124)
1026
+ module_eval(<<'.,.,', 'parser.y', 142)
969
1027
  def _reduce_52(val, _values, result)
970
- result = Calculator.build :GTE, val[0], val[2]
1028
+ result = build Calculator, :GT, val[0], val[2], position: pospoppush(3)
971
1029
  result
972
1030
  end
973
1031
  .,.,
974
1032
 
975
- module_eval(<<'.,.,', 'parser.y', 125)
1033
+ module_eval(<<'.,.,', 'parser.y', 143)
976
1034
  def _reduce_53(val, _values, result)
977
- result = Calculator.build :LT, val[0], val[2]
1035
+ result = build Calculator, :GTE, val[0], val[2], position: pospoppush(3)
978
1036
  result
979
1037
  end
980
1038
  .,.,
981
1039
 
982
- module_eval(<<'.,.,', 'parser.y', 126)
1040
+ module_eval(<<'.,.,', 'parser.y', 144)
983
1041
  def _reduce_54(val, _values, result)
984
- result = Calculator.build :LTE, val[0], val[2]
1042
+ result = build Calculator, :LT, val[0], val[2], position: pospoppush(3)
985
1043
  result
986
1044
  end
987
1045
  .,.,
988
1046
 
989
- module_eval(<<'.,.,', 'parser.y', 127)
1047
+ module_eval(<<'.,.,', 'parser.y', 145)
990
1048
  def _reduce_55(val, _values, result)
991
- result = Calculator.build :EQUAL, val[0], val[2]
1049
+ result = build Calculator, :LTE, val[0], val[2], position: pospoppush(3)
992
1050
  result
993
1051
  end
994
1052
  .,.,
995
1053
 
996
- module_eval(<<'.,.,', 'parser.y', 128)
1054
+ module_eval(<<'.,.,', 'parser.y', 146)
997
1055
  def _reduce_56(val, _values, result)
998
- result = Calculator.build :INEQUAL, val[0], val[2]
1056
+ result = build Calculator, :EQUAL, val[0], val[2], position: pospoppush(3)
999
1057
  result
1000
1058
  end
1001
1059
  .,.,
1002
1060
 
1003
- module_eval(<<'.,.,', 'parser.y', 129)
1061
+ module_eval(<<'.,.,', 'parser.y', 147)
1004
1062
  def _reduce_57(val, _values, result)
1005
- result = Calculator.build :NOT, val[1]
1063
+ result = build Calculator, :INEQUAL, val[0], val[2], position: pospoppush(3)
1006
1064
  result
1007
1065
  end
1008
1066
  .,.,
1009
1067
 
1010
- module_eval(<<'.,.,', 'parser.y', 130)
1068
+ module_eval(<<'.,.,', 'parser.y', 148)
1011
1069
  def _reduce_58(val, _values, result)
1012
- result = Assigner.build val[0], val[2]
1070
+ result = build Calculator, :NOT, val[1], position: pospoppush(2)
1013
1071
  result
1014
1072
  end
1015
1073
  .,.,
1016
1074
 
1017
- module_eval(<<'.,.,', 'parser.y', 131)
1075
+ module_eval(<<'.,.,', 'parser.y', 149)
1018
1076
  def _reduce_59(val, _values, result)
1019
- val[2].children[0] = val[0]; result = val[2]
1077
+ result = build Assigner, val[0], val[2], position: pospoppush(3)
1020
1078
  result
1021
1079
  end
1022
1080
  .,.,
1023
1081
 
1024
- module_eval(<<'.,.,', 'parser.y', 132)
1082
+ module_eval(<<'.,.,', 'parser.y', 150)
1025
1083
  def _reduce_60(val, _values, result)
1026
- result = Summoner.build val[0], '[]', *val[2]
1084
+ pospoppush(3); val[2].children[0] = val[0]; result = val[2]
1027
1085
  result
1028
1086
  end
1029
1087
  .,.,
1030
1088
 
1031
- module_eval(<<'.,.,', 'parser.y', 133)
1089
+ module_eval(<<'.,.,', 'parser.y', 152)
1032
1090
  def _reduce_61(val, _values, result)
1033
- result = nil
1091
+ result = build Summoner, 'manipulator_brackets', val[0], *val[2], position: pospoppush(4)
1092
+
1034
1093
  result
1035
1094
  end
1036
1095
  .,.,
1037
1096
 
1038
- module_eval(<<'.,.,', 'parser.y', 135)
1097
+ module_eval(<<'.,.,', 'parser.y', 154)
1039
1098
  def _reduce_62(val, _values, result)
1040
- result = case val[1].size
1041
- when 0
1042
- nil
1043
- when 1
1044
- val[1][0]
1045
- else
1046
- Sequencer.build :SEQUENCE, *val[1].flatten
1047
- end
1048
-
1099
+ pospoppush(2); result = nil
1049
1100
  result
1050
1101
  end
1051
1102
  .,.,
1052
1103
 
1053
- # reduce 63 omitted
1104
+ module_eval(<<'.,.,', 'parser.y', 156)
1105
+ def _reduce_63(val, _values, result)
1106
+ position = pospoppush(3)
1107
+ result = case val[1].size
1108
+ when 1
1109
+ val[1][0]
1110
+ else
1111
+ build Sequencer, :SEQUENCE, *val[1].flatten, position: position
1112
+ end
1113
+
1114
+ result
1115
+ end
1116
+ .,.,
1054
1117
 
1055
1118
  # reduce 64 omitted
1056
1119
 
@@ -1078,102 +1141,105 @@ module_eval(<<'.,.,', 'parser.y', 135)
1078
1141
 
1079
1142
  # reduce 76 omitted
1080
1143
 
1081
- module_eval(<<'.,.,', 'parser.y', 154)
1082
- def _reduce_77(val, _values, result)
1083
- result = Arrayer.build :ARRAY
1084
- result
1085
- end
1086
- .,.,
1144
+ # reduce 77 omitted
1087
1145
 
1088
- module_eval(<<'.,.,', 'parser.y', 155)
1146
+ module_eval(<<'.,.,', 'parser.y', 172)
1089
1147
  def _reduce_78(val, _values, result)
1090
- result = Arrayer.build :ARRAY, *val[1]
1148
+ result = build Arrayer, :ARRAY, position: pospoppush(2)
1091
1149
  result
1092
1150
  end
1093
1151
  .,.,
1094
1152
 
1095
- module_eval(<<'.,.,', 'parser.y', 156)
1153
+ module_eval(<<'.,.,', 'parser.y', 173)
1096
1154
  def _reduce_79(val, _values, result)
1097
- val[0].push(val[2])
1155
+ result = build Arrayer, :ARRAY, *val[1], position: pospoppush(3)
1098
1156
  result
1099
1157
  end
1100
1158
  .,.,
1101
1159
 
1102
- module_eval(<<'.,.,', 'parser.y', 157)
1160
+ module_eval(<<'.,.,', 'parser.y', 174)
1103
1161
  def _reduce_80(val, _values, result)
1104
- result = [val[0]]
1162
+ pospoppush(3); val[0].push(val[2])
1105
1163
  result
1106
1164
  end
1107
1165
  .,.,
1108
1166
 
1109
- module_eval(<<'.,.,', 'parser.y', 159)
1167
+ module_eval(<<'.,.,', 'parser.y', 175)
1110
1168
  def _reduce_81(val, _values, result)
1111
- result = Hasher.build :HASH
1169
+ result = [val[0]]
1112
1170
  result
1113
1171
  end
1114
1172
  .,.,
1115
1173
 
1116
- module_eval(<<'.,.,', 'parser.y', 160)
1174
+ module_eval(<<'.,.,', 'parser.y', 177)
1117
1175
  def _reduce_82(val, _values, result)
1118
- result = Hasher.build :HASH, *val[1]
1176
+ result = build Hasher, :HASH, position: pospoppush(2)
1119
1177
  result
1120
1178
  end
1121
1179
  .,.,
1122
1180
 
1123
- module_eval(<<'.,.,', 'parser.y', 161)
1181
+ module_eval(<<'.,.,', 'parser.y', 178)
1124
1182
  def _reduce_83(val, _values, result)
1125
- val[0].push(val[2])
1183
+ result = build Hasher, :HASH, *val[1], position: pospoppush(3)
1126
1184
  result
1127
1185
  end
1128
1186
  .,.,
1129
1187
 
1130
- module_eval(<<'.,.,', 'parser.y', 162)
1188
+ module_eval(<<'.,.,', 'parser.y', 179)
1131
1189
  def _reduce_84(val, _values, result)
1132
- result = [val[0]]
1190
+ pospoppush(3); val[0].push(val[2])
1133
1191
  result
1134
1192
  end
1135
1193
  .,.,
1136
1194
 
1137
- module_eval(<<'.,.,', 'parser.y', 163)
1195
+ module_eval(<<'.,.,', 'parser.y', 180)
1138
1196
  def _reduce_85(val, _values, result)
1139
- result = Arrayer.build :PAIR, val[0], val[2]
1197
+ result = [val[0]]
1140
1198
  result
1141
1199
  end
1142
1200
  .,.,
1143
1201
 
1144
- module_eval(<<'.,.,', 'parser.y', 165)
1202
+ module_eval(<<'.,.,', 'parser.y', 181)
1145
1203
  def _reduce_86(val, _values, result)
1146
- result = [*val[0], Hasher.build(:HASH, *val[2])]
1204
+ result = build Arrayer, :PAIR, val[0], val[2], position: pospoppush(3)
1147
1205
  result
1148
1206
  end
1149
1207
  .,.,
1150
1208
 
1151
- # reduce 87 omitted
1152
-
1153
- module_eval(<<'.,.,', 'parser.y', 167)
1154
- def _reduce_88(val, _values, result)
1155
- result = Hasher.build(:HASH, *val[0])
1209
+ module_eval(<<'.,.,', 'parser.y', 183)
1210
+ def _reduce_87(val, _values, result)
1211
+ result = [*val[0], build(Hasher, :HASH, *val[2], position: pospoppush(3))]
1156
1212
  result
1157
1213
  end
1158
1214
  .,.,
1159
1215
 
1160
- module_eval(<<'.,.,', 'parser.y', 168)
1216
+ # reduce 88 omitted
1217
+
1218
+ module_eval(<<'.,.,', 'parser.y', 185)
1161
1219
  def _reduce_89(val, _values, result)
1162
- result = Summoner.build nil, val[0]
1220
+ result = build Hasher, :HASH, *val[0], position: pospoppush(1)
1163
1221
  result
1164
1222
  end
1165
1223
  .,.,
1166
1224
 
1167
- module_eval(<<'.,.,', 'parser.y', 169)
1225
+ module_eval(<<'.,.,', 'parser.y', 186)
1168
1226
  def _reduce_90(val, _values, result)
1169
- result = Summoner.build nil, val[0]
1227
+ result = build Summoner, val[0], position: pospoppush(1)
1170
1228
  result
1171
1229
  end
1172
1230
  .,.,
1173
1231
 
1174
- module_eval(<<'.,.,', 'parser.y', 170)
1232
+ module_eval(<<'.,.,', 'parser.y', 187)
1175
1233
  def _reduce_91(val, _values, result)
1176
- result = Summoner.build nil, val[0], *val[2]
1234
+ result = build Summoner, val[0], position: pospoppush(3)
1235
+ result
1236
+ end
1237
+ .,.,
1238
+
1239
+ module_eval(<<'.,.,', 'parser.y', 189)
1240
+ def _reduce_92(val, _values, result)
1241
+ result = build Summoner, val[0], nil, *val[2], position: pospoppush(4)
1242
+
1177
1243
  result
1178
1244
  end
1179
1245
  .,.,