mvinl 0.1.4 → 0.1.6

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.
data/syntax/mvinl.tab.rb CHANGED
@@ -8,22 +8,13 @@ require 'racc/parser.rb'
8
8
  module MVinl
9
9
  class Program < Racc::Parser
10
10
 
11
- module_eval(<<'...end mvinl.y/module_eval...', 'mvinl.y', 112)
12
-
13
- FUNCTIONS = {}
14
- STATE = {
15
- in_prop: false,
16
- in_keyword_arg: false,
17
- keyword_arg_depth: 0,
18
- depth: 0
19
- }
20
-
11
+ module_eval(<<'...end mvinl.y/module_eval...', 'mvinl.y', 144)
21
12
  class MVinl::ParserError < StandardError; end
22
13
 
23
14
  private
24
15
 
25
16
  def create_property(id, positional_args = [], keyword_args = {})
26
- STATE[:in_prop] = false
17
+ @context.state[:in_prop] = false
27
18
  {id => [positional_args, keyword_args]}
28
19
  end
29
20
 
@@ -31,9 +22,12 @@ module_eval(<<'...end mvinl.y/module_eval...', 'mvinl.y', 112)
31
22
  properties || Hash.new
32
23
  end
33
24
 
34
- def define_function(name, args, body)
35
- FUNCTIONS[name.to_sym] = {args: args, body: body}
36
- nil
25
+ def evaluate_const(const_name)
26
+ MVinl::Context::CONSTANTS[const_name]
27
+ end
28
+
29
+ def evaluate_var(var_name)
30
+ @context.variables[var_name]
37
31
  end
38
32
 
39
33
  def evaluate_pn(operator, operands, context = {})
@@ -47,14 +41,22 @@ module_eval(<<'...end mvinl.y/module_eval...', 'mvinl.y', 112)
47
41
  end
48
42
  end
49
43
 
50
- if FUNCTIONS.key?(operator)
51
- function = FUNCTIONS[operator]
44
+ if @context.functions.key?(operator)
45
+ function = @context.functions[operator]
52
46
  raise MVinl::ParserError, "Argument mismatch for #{operator}" if operands.size != function[:args].size
53
47
 
54
48
  # Map arguments to operands
55
49
  new_context = function[:args].zip(operands).to_h
56
50
  # Replace symbols in body with context values
57
51
  function = replace_symbols(function[:body], new_context)
52
+ # Evaluate variables
53
+ function.map! do |e|
54
+ if e.is_a? Hash
55
+ e[:var] ? evaluate_var(e[:var]) : evaluate_const(e[:con])
56
+ else
57
+ e
58
+ end
59
+ end
58
60
  # Recursive evaluation
59
61
  evaluate_pn(function[0], function[1..], new_context)
60
62
  else
@@ -81,137 +83,166 @@ module_eval(<<'...end mvinl.y/module_eval...', 'mvinl.y', 112)
81
83
  ##### State transition tables begin ###
82
84
 
83
85
  racc_action_table = [
84
- -9, 8, -9, -9, -9, 11, 2, 15, 5, 6,
85
- 15, -9, 28, 29, 41, 15, -9, 7, 24, 25,
86
- 27, 28, 29, 17, 11, 41, 15, 37, 15, 24,
87
- 25, 27, 28, 29, 43, 11, 43, 54, nil, 15,
88
- 24, 25, 27, 28, 29, nil, 11, 43, 54, nil,
89
- 15, 24, 25, 27, 28, 29, nil, 11, 43, nil,
90
- nil, 15, 24, 25, 27, 28, 29, nil, 11, 43,
91
- nil, nil, 15, -15, 24, 25, 27, 28, 29, nil,
92
- 11, 24, 25, 27, 28, 29, nil, 11 ]
86
+ -16, 15, -16, -16, -16, -16, -16, 2, 19, 8,
87
+ 10, 12, 13, 29, 30, -16, 41, 19, 41, 19,
88
+ -16, 32, 14, 23, 24, 25, 26, 28, 29, 30,
89
+ 36, 32, 52, 55, 19, 19, 23, 24, 25, 26,
90
+ 28, 29, 30, 19, 32, 52, 55, 50, 19, 61,
91
+ 62, 25, 26, 28, 29, 30, 52, 32, nil, nil,
92
+ nil, 19, 61, 62, 25, 26, 28, 29, 30, nil,
93
+ 32, 52, nil, nil, 19, 61, 62, 25, 26, 28,
94
+ 29, 30, nil, 32, 52, nil, nil, 19, -22, 23,
95
+ 24, 25, 26, 28, 29, 30, nil, 32, 23, 24,
96
+ 25, 26, 28, 29, 30, nil, 32, 23, 24, 25,
97
+ 26, 28, 29, 30, nil, 32, 23, 24, 25, 26,
98
+ 28, 29, 30, nil, 32 ]
93
99
 
94
100
  racc_action_check = [
95
- 13, 2, 13, 13, 13, 7, 1, 9, 1, 1,
96
- 10, 13, 29, 29, 30, 30, 13, 1, 19, 19,
97
- 19, 19, 19, 12, 19, 32, 32, 20, 19, 47,
98
- 47, 47, 47, 47, 31, 47, 47, 47, nil, 47,
99
- 48, 48, 48, 48, 48, nil, 48, 48, 48, nil,
100
- 48, 49, 49, 49, 49, 49, nil, 49, 49, nil,
101
- nil, 49, 50, 50, 50, 50, 50, nil, 50, 50,
102
- nil, nil, 50, 18, 18, 18, 18, 18, 18, nil,
103
- 18, 36, 36, 36, 36, 36, nil, 36 ]
101
+ 17, 2, 17, 17, 17, 17, 17, 1, 4, 1,
102
+ 1, 1, 1, 30, 30, 17, 31, 31, 58, 58,
103
+ 17, 14, 1, 45, 45, 45, 45, 45, 45, 45,
104
+ 16, 45, 45, 45, 34, 45, 46, 46, 46, 46,
105
+ 46, 46, 46, 35, 46, 46, 46, 43, 46, 47,
106
+ 47, 47, 47, 47, 47, 47, 57, 47, nil, nil,
107
+ nil, 47, 67, 67, 67, 67, 67, 67, 67, nil,
108
+ 67, 67, nil, nil, 67, 68, 68, 68, 68, 68,
109
+ 68, 68, nil, 68, 68, nil, nil, 68, 37, 37,
110
+ 37, 37, 37, 37, 37, 37, nil, 37, 9, 9,
111
+ 9, 9, 9, 9, 9, nil, 9, 11, 11, 11,
112
+ 11, 11, 11, 11, nil, 11, 49, 49, 49, 49,
113
+ 49, 49, 49, nil, 49 ]
104
114
 
105
115
  racc_action_pointer = [
106
- nil, 6, 1, nil, nil, nil, nil, -7, nil, -9,
107
- -6, nil, 19, 0, nil, nil, nil, nil, 68, 12,
108
- 22, nil, nil, nil, nil, nil, nil, nil, nil, 3,
109
- -1, 21, 10, nil, nil, nil, 75, nil, nil, nil,
110
- nil, nil, nil, nil, nil, nil, nil, 23, 34, 45,
111
- 56, nil, nil, nil, nil, nil, nil, nil, nil ]
116
+ nil, 7, 1, nil, -12, nil, nil, nil, nil, 90,
117
+ nil, 99, nil, nil, 5, nil, 24, 0, nil, nil,
118
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
119
+ 0, -3, nil, nil, 14, 23, nil, 81, nil, nil,
120
+ nil, nil, nil, 40, nil, 15, 28, 41, nil, 108,
121
+ nil, nil, nil, nil, nil, nil, nil, 39, -1, nil,
122
+ nil, nil, nil, nil, nil, nil, nil, 54, 67, nil,
123
+ nil, nil ]
112
124
 
113
125
  racc_action_default = [
114
- -1, -44, -44, -2, -3, -4, -6, -44, 59, -5,
115
- -44, -32, -7, -13, -12, -43, -34, -8, -10, -44,
116
- -11, -14, -19, -20, -21, -22, -23, -24, -25, -44,
117
- -44, -37, -44, -35, -36, -16, -44, -18, -26, -38,
118
- -38, -42, -27, -33, -34, -34, -17, -44, -44, -44,
119
- -44, -30, -39, -40, -41, -31, -28, -37, -29 ]
126
+ -1, -13, -55, -2, -3, -4, -5, -6, -7, -55,
127
+ -9, -55, -11, -13, -55, 72, -14, -20, -19, -54,
128
+ -8, -26, -27, -28, -29, -30, -31, -32, -33, -34,
129
+ -55, -55, -41, -10, -12, -55, -15, -17, -35, -49,
130
+ -49, -53, -43, -18, -21, -55, -55, -55, -23, -55,
131
+ -25, -39, -42, -50, -51, -52, -40, -48, -55, -44,
132
+ -45, -46, -47, -24, -36, -43, -43, -55, -55, -37,
133
+ -48, -38 ]
120
134
 
121
135
  racc_goto_table = [
122
- 10, 14, 16, 34, 40, 21, 45, 19, 1, 42,
123
- 47, 48, 32, 3, 4, 9, 12, 13, 18, 20,
124
- 35, 36, 39, 46, 44, 51, 55, 56, 58, 38,
125
- 31, nil, nil, 34, 34, 49, 50, nil, nil, 53,
126
- 53, nil, 32, 32 ]
136
+ 18, 40, 35, 60, 20, 4, 33, 45, 46, 1,
137
+ 47, 3, 5, 6, 51, 56, 7, 34, 9, 11,
138
+ 37, 43, 48, 60, 60, 49, 64, 39, 66, 38,
139
+ 18, 42, 44, 67, 68, 58, 69, 71, 57, nil,
140
+ nil, 54, 54, nil, 63, nil, nil, nil, nil, nil,
141
+ nil, nil, nil, nil, 65, 58, 58 ]
127
142
 
128
143
  racc_goto_check = [
129
- 16, 9, 9, 13, 20, 10, 20, 17, 1, 19,
130
- 21, 21, 16, 2, 3, 4, 5, 6, 7, 8,
131
- 11, 12, 9, 10, 9, 19, 19, 19, 19, 15,
132
- 18, nil, nil, 13, 13, 17, 17, nil, nil, 9,
133
- 9, nil, 16, 16 ]
144
+ 14, 24, 20, 17, 8, 3, 8, 25, 25, 1,
145
+ 21, 2, 4, 5, 23, 23, 6, 3, 7, 9,
146
+ 12, 13, 15, 17, 17, 16, 23, 14, 24, 19,
147
+ 14, 14, 8, 21, 21, 20, 23, 23, 22, nil,
148
+ nil, 14, 14, nil, 8, nil, nil, nil, nil, nil,
149
+ nil, nil, nil, nil, 14, 20, 20 ]
134
150
 
135
151
  racc_goto_pointer = [
136
- nil, 8, 12, 13, 9, 7, 8, 5, 1, -8,
137
- -13, 0, 1, -16, nil, 0, -7, -9, 11, -22,
138
- -26, -29 ]
152
+ nil, 9, 10, 4, 11, 12, 15, 17, -5, 18,
153
+ nil, nil, 3, -16, -4, -21, -18, -44, nil, -1,
154
+ -12, -32, -9, -31, -30, -32 ]
139
155
 
140
156
  racc_goto_default = [
141
- nil, nil, nil, nil, nil, nil, nil, nil, nil, 33,
142
- 52, nil, nil, 22, 23, 26, 30, nil, 57, nil,
143
- nil, nil ]
157
+ nil, nil, nil, nil, nil, nil, nil, nil, 53, nil,
158
+ 16, 17, nil, nil, 59, nil, nil, 21, 22, 27,
159
+ 31, nil, 70, nil, nil, nil ]
144
160
 
145
161
  racc_reduce_table = [
146
162
  0, 0, :racc_error,
147
- 0, 18, :_reduce_1,
148
- 2, 18, :_reduce_2,
149
- 2, 18, :_reduce_3,
150
- 2, 18, :_reduce_4,
151
- 2, 19, :_reduce_5,
152
- 0, 21, :_reduce_6,
153
- 2, 21, :_reduce_7,
154
- 3, 21, :_reduce_8,
155
- 1, 22, :_reduce_9,
156
- 2, 22, :_reduce_10,
157
- 3, 22, :_reduce_11,
158
- 1, 23, :_reduce_12,
163
+ 0, 22, :_reduce_1,
164
+ 2, 22, :_reduce_2,
165
+ 2, 22, :_reduce_3,
166
+ 2, 22, :_reduce_4,
167
+ 2, 22, :_reduce_5,
168
+ 2, 22, :_reduce_6,
169
+ 2, 22, :_reduce_7,
170
+ 2, 26, :_reduce_8,
171
+ 1, 28, :_reduce_9,
172
+ 2, 25, :_reduce_10,
173
+ 1, 30, :_reduce_11,
174
+ 2, 23, :_reduce_12,
159
175
  0, 24, :_reduce_13,
160
176
  2, 24, :_reduce_14,
161
- 0, 25, :_reduce_15,
162
- 2, 25, :_reduce_16,
163
- 2, 28, :_reduce_17,
164
- 1, 29, :_reduce_18,
165
- 1, 27, :_reduce_19,
166
- 1, 27, :_reduce_20,
167
- 1, 30, :_reduce_21,
168
- 1, 30, :_reduce_22,
169
- 1, 30, :_reduce_23,
170
- 1, 30, :_reduce_24,
171
- 1, 32, :_reduce_25,
172
- 2, 32, :_reduce_26,
173
- 6, 20, :_reduce_27,
174
- 4, 35, :_reduce_28,
175
- 4, 35, :_reduce_29,
176
- 4, 31, :_reduce_30,
177
- 4, 31, :_reduce_31,
178
- 1, 33, :_reduce_32,
179
- 1, 36, :_reduce_33,
180
- 0, 34, :_reduce_34,
181
- 2, 34, :_reduce_35,
182
- 2, 34, :_reduce_36,
183
- 2, 34, :_reduce_37,
184
- 0, 38, :_reduce_38,
185
- 2, 38, :_reduce_39,
186
- 2, 38, :_reduce_40,
187
- 2, 38, :_reduce_41,
188
- 1, 37, :_reduce_42,
189
- 1, 26, :_reduce_43 ]
190
-
191
- racc_reduce_n = 44
192
-
193
- racc_shift_n = 59
177
+ 3, 24, :_reduce_15,
178
+ 1, 31, :_reduce_16,
179
+ 2, 31, :_reduce_17,
180
+ 3, 31, :_reduce_18,
181
+ 1, 32, :_reduce_19,
182
+ 0, 33, :_reduce_20,
183
+ 2, 33, :_reduce_21,
184
+ 0, 34, :_reduce_22,
185
+ 2, 34, :_reduce_23,
186
+ 2, 36, :_reduce_24,
187
+ 1, 37, :_reduce_25,
188
+ 1, 29, :_reduce_26,
189
+ 1, 29, :_reduce_27,
190
+ 1, 29, :_reduce_28,
191
+ 1, 29, :_reduce_29,
192
+ 1, 38, :_reduce_30,
193
+ 1, 38, :_reduce_31,
194
+ 1, 38, :_reduce_32,
195
+ 1, 38, :_reduce_33,
196
+ 1, 40, :_reduce_34,
197
+ 2, 40, :_reduce_35,
198
+ 6, 27, :_reduce_36,
199
+ 4, 43, :_reduce_37,
200
+ 4, 43, :_reduce_38,
201
+ 4, 39, :_reduce_39,
202
+ 4, 39, :_reduce_40,
203
+ 1, 41, :_reduce_41,
204
+ 1, 44, :_reduce_42,
205
+ 0, 42, :_reduce_43,
206
+ 2, 42, :_reduce_44,
207
+ 2, 42, :_reduce_45,
208
+ 2, 42, :_reduce_46,
209
+ 2, 42, :_reduce_47,
210
+ 2, 42, :_reduce_48,
211
+ 0, 46, :_reduce_49,
212
+ 2, 46, :_reduce_50,
213
+ 2, 46, :_reduce_51,
214
+ 2, 46, :_reduce_52,
215
+ 1, 45, :_reduce_53,
216
+ 1, 35, :_reduce_54 ]
217
+
218
+ racc_reduce_n = 55
219
+
220
+ racc_shift_n = 72
194
221
 
195
222
  racc_token_table = {
196
223
  false => 0,
197
224
  :error => 1,
198
225
  :EOS => 2,
199
- :GROUP => 3,
200
- :END_TAG => 4,
201
- :KEYWORD_ARG => 5,
202
- :NUMBER => 6,
203
- :FLOAT => 7,
204
- :SYMBOL => 8,
205
- :STRING => 9,
206
- :MULTILINE_STRING => 10,
207
- :DEF => 11,
208
- :OPEN_PAREN => 12,
209
- :CLOSE_PAREN => 13,
210
- :polish_notation => 14,
211
- :OPER => 15,
212
- :ID => 16 }
213
-
214
- racc_nt_base = 17
226
+ :VARIABLE => 3,
227
+ :CONSTANT => 4,
228
+ :GROUP => 5,
229
+ :END_TAG => 6,
230
+ :KEYWORD_ARG => 7,
231
+ :CONSTANT_CALL => 8,
232
+ :VARIABLE_CALL => 9,
233
+ :NUMBER => 10,
234
+ :FLOAT => 11,
235
+ :SYMBOL => 12,
236
+ :STRING => 13,
237
+ :MULTILINE_STRING => 14,
238
+ :DEF => 15,
239
+ :OPEN_PAREN => 16,
240
+ :CLOSE_PAREN => 17,
241
+ :polish_notation => 18,
242
+ :OPER => 19,
243
+ :ID => 20 }
244
+
245
+ racc_nt_base = 21
215
246
 
216
247
  racc_use_result_var = false
217
248
 
@@ -236,9 +267,13 @@ Racc_token_to_s_table = [
236
267
  "$end",
237
268
  "error",
238
269
  "EOS",
270
+ "VARIABLE",
271
+ "CONSTANT",
239
272
  "GROUP",
240
273
  "END_TAG",
241
274
  "KEYWORD_ARG",
275
+ "CONSTANT_CALL",
276
+ "VARIABLE_CALL",
242
277
  "NUMBER",
243
278
  "FLOAT",
244
279
  "SYMBOL",
@@ -253,14 +288,18 @@ Racc_token_to_s_table = [
253
288
  "$start",
254
289
  "program",
255
290
  "group",
256
- "function_def",
257
291
  "properties",
292
+ "constant_def",
293
+ "variable_def",
294
+ "function_def",
295
+ "var_def_name",
296
+ "super_value",
297
+ "const_def_name",
258
298
  "property",
259
299
  "prop_id",
260
300
  "positional_args",
261
301
  "keyword_args",
262
302
  "identifier",
263
- "super_value",
264
303
  "keyword_arg",
265
304
  "keyword_arg_id",
266
305
  "value",
@@ -294,7 +333,7 @@ module_eval(<<'.,.,', 'mvinl.y', 13)
294
333
 
295
334
  module_eval(<<'.,.,', 'mvinl.y', 14)
296
335
  def _reduce_3(val, _values)
297
- val[0]
336
+ val[0].merge(val[1])
298
337
  end
299
338
  .,.,
300
339
 
@@ -304,242 +343,317 @@ module_eval(<<'.,.,', 'mvinl.y', 15)
304
343
  end
305
344
  .,.,
306
345
 
307
- module_eval(<<'.,.,', 'mvinl.y', 18)
346
+ module_eval(<<'.,.,', 'mvinl.y', 16)
308
347
  def _reduce_5(val, _values)
309
- {val[0].to_sym => create_group(val[1])}
348
+ val[0]
310
349
  end
311
350
  .,.,
312
351
 
313
- module_eval(<<'.,.,', 'mvinl.y', 21)
352
+ module_eval(<<'.,.,', 'mvinl.y', 17)
314
353
  def _reduce_6(val, _values)
315
- Hash.new
354
+ val[0]
316
355
  end
317
356
  .,.,
318
357
 
319
- module_eval(<<'.,.,', 'mvinl.y', 22)
358
+ module_eval(<<'.,.,', 'mvinl.y', 18)
320
359
  def _reduce_7(val, _values)
321
- val[0].merge(val[1])
360
+ val[0]
322
361
  end
323
362
  .,.,
324
363
 
325
364
  module_eval(<<'.,.,', 'mvinl.y', 23)
326
365
  def _reduce_8(val, _values)
327
- val[0].merge(val[1])
366
+ @context.define_variable(val[0], val[1]) ||
367
+ raise(MVinl::ParserError, "Trying to define a reserved word '#{val[0]}' as a variable")
368
+
328
369
  end
329
370
  .,.,
330
371
 
331
- module_eval(<<'.,.,', 'mvinl.y', 26)
372
+ module_eval(<<'.,.,', 'mvinl.y', 28)
332
373
  def _reduce_9(val, _values)
333
- create_property(val[0])
374
+ @context.state[:in_var] = true; val[0].to_sym
334
375
  end
335
376
  .,.,
336
377
 
337
- module_eval(<<'.,.,', 'mvinl.y', 27)
378
+ module_eval(<<'.,.,', 'mvinl.y', 33)
338
379
  def _reduce_10(val, _values)
339
- create_property(val[0], val[1])
380
+ if (res = @context.define_constant(val[0], val[1])) == nil
381
+ raise(MVinl::ParserError, "Trying to define a reserved word '#{val[0]}' as a constant")
382
+ elsif (res == false)
383
+ raise(MVinl::ParserError, "Can't overwrite a constant #{val[0]}")
384
+ else
385
+ res
386
+ end
387
+
340
388
  end
341
389
  .,.,
342
390
 
343
- module_eval(<<'.,.,', 'mvinl.y', 28)
391
+ module_eval(<<'.,.,', 'mvinl.y', 43)
344
392
  def _reduce_11(val, _values)
345
- create_property(val[0], val[1], val[2])
393
+ @context.state[:in_var] = true; val[0].to_sym
346
394
  end
347
395
  .,.,
348
396
 
349
- module_eval(<<'.,.,', 'mvinl.y', 31)
397
+ module_eval(<<'.,.,', 'mvinl.y', 46)
350
398
  def _reduce_12(val, _values)
351
- STATE[:in_prop] = true; val[0]
399
+ {val[0].to_sym => create_group(val[1])}
352
400
  end
353
401
  .,.,
354
402
 
355
- module_eval(<<'.,.,', 'mvinl.y', 34)
403
+ module_eval(<<'.,.,', 'mvinl.y', 49)
356
404
  def _reduce_13(val, _values)
357
- Array.new
405
+ Hash.new
358
406
  end
359
407
  .,.,
360
408
 
361
- module_eval(<<'.,.,', 'mvinl.y', 35)
409
+ module_eval(<<'.,.,', 'mvinl.y', 50)
362
410
  def _reduce_14(val, _values)
363
- val[0] << val[1]
411
+ val[0].merge(val[1])
364
412
  end
365
413
  .,.,
366
414
 
367
- module_eval(<<'.,.,', 'mvinl.y', 38)
415
+ module_eval(<<'.,.,', 'mvinl.y', 51)
368
416
  def _reduce_15(val, _values)
369
- Hash.new
417
+ val[0].merge(val[1])
370
418
  end
371
419
  .,.,
372
420
 
373
- module_eval(<<'.,.,', 'mvinl.y', 41)
421
+ module_eval(<<'.,.,', 'mvinl.y', 54)
374
422
  def _reduce_16(val, _values)
375
- STATE[:keyword_arg_depth] = 0
376
- val[0].merge(val[1])
377
-
423
+ create_property(val[0])
378
424
  end
379
425
  .,.,
380
426
 
381
- module_eval(<<'.,.,', 'mvinl.y', 48)
427
+ module_eval(<<'.,.,', 'mvinl.y', 55)
382
428
  def _reduce_17(val, _values)
383
- STATE[:in_keyword_arg] = false
384
- STATE[:keyword_arg_depth] += 1
385
- {val[0].to_sym => val[1]}
386
-
429
+ create_property(val[0], val[1])
387
430
  end
388
431
  .,.,
389
432
 
390
- module_eval(<<'.,.,', 'mvinl.y', 54)
433
+ module_eval(<<'.,.,', 'mvinl.y', 56)
391
434
  def _reduce_18(val, _values)
392
- STATE[:in_keyword_arg] = true; val[0]
435
+ create_property(val[0], val[1], val[2])
393
436
  end
394
437
  .,.,
395
438
 
396
- module_eval(<<'.,.,', 'mvinl.y', 57)
439
+ module_eval(<<'.,.,', 'mvinl.y', 59)
397
440
  def _reduce_19(val, _values)
398
- val[0]
441
+ @context.state[:in_prop] = true; val[0]
399
442
  end
400
443
  .,.,
401
444
 
402
- module_eval(<<'.,.,', 'mvinl.y', 58)
445
+ module_eval(<<'.,.,', 'mvinl.y', 62)
403
446
  def _reduce_20(val, _values)
404
- val[0]
447
+ Array.new
405
448
  end
406
449
  .,.,
407
450
 
408
- module_eval(<<'.,.,', 'mvinl.y', 61)
451
+ module_eval(<<'.,.,', 'mvinl.y', 63)
409
452
  def _reduce_21(val, _values)
410
- val[0].to_i
453
+ val[0] << val[1]
411
454
  end
412
455
  .,.,
413
456
 
414
- module_eval(<<'.,.,', 'mvinl.y', 62)
457
+ module_eval(<<'.,.,', 'mvinl.y', 66)
415
458
  def _reduce_22(val, _values)
416
- val[0].to_f
459
+ Hash.new
417
460
  end
418
461
  .,.,
419
462
 
420
- module_eval(<<'.,.,', 'mvinl.y', 63)
463
+ module_eval(<<'.,.,', 'mvinl.y', 69)
421
464
  def _reduce_23(val, _values)
422
- val[0]
465
+ @context.state[:keyword_arg_depth] = 0
466
+ val[0].merge(val[1])
467
+
423
468
  end
424
469
  .,.,
425
470
 
426
- module_eval(<<'.,.,', 'mvinl.y', 64)
471
+ module_eval(<<'.,.,', 'mvinl.y', 76)
427
472
  def _reduce_24(val, _values)
428
- val[0].to_sym
473
+ @context.state[:in_keyword_arg] = false
474
+ @context.state[:keyword_arg_depth] += 1
475
+ {val[0].to_sym => val[1]}
476
+
429
477
  end
430
478
  .,.,
431
479
 
432
- module_eval(<<'.,.,', 'mvinl.y', 67)
480
+ module_eval(<<'.,.,', 'mvinl.y', 82)
433
481
  def _reduce_25(val, _values)
434
- val[0]
482
+ @context.state[:in_keyword_arg] = true; val[0]
435
483
  end
436
484
  .,.,
437
485
 
438
- module_eval(<<'.,.,', 'mvinl.y', 68)
486
+ module_eval(<<'.,.,', 'mvinl.y', 85)
439
487
  def _reduce_26(val, _values)
440
- "#{val[0]} #{val[1]}"
488
+ val[0]
441
489
  end
442
490
  .,.,
443
491
 
444
- module_eval(<<'.,.,', 'mvinl.y', 73)
492
+ module_eval(<<'.,.,', 'mvinl.y', 86)
445
493
  def _reduce_27(val, _values)
446
- define_function(val[2], val[3], val[4])
447
-
494
+ val[0]
448
495
  end
449
496
  .,.,
450
497
 
451
- module_eval(<<'.,.,', 'mvinl.y', 77)
498
+ module_eval(<<'.,.,', 'mvinl.y', 87)
452
499
  def _reduce_28(val, _values)
453
- [val[1], *val[2]]
500
+ MVinl::Context::CONSTANTS[val[0]]
454
501
  end
455
502
  .,.,
456
503
 
457
- module_eval(<<'.,.,', 'mvinl.y', 78)
504
+ module_eval(<<'.,.,', 'mvinl.y', 88)
458
505
  def _reduce_29(val, _values)
459
- [val[1], *val[2]]
506
+ @context.variables[val[0]]
460
507
  end
461
508
  .,.,
462
509
 
463
- module_eval(<<'.,.,', 'mvinl.y', 81)
510
+ module_eval(<<'.,.,', 'mvinl.y', 91)
464
511
  def _reduce_30(val, _values)
465
- evaluate_pn(val[1], val[2])
512
+ val[0].to_i
466
513
  end
467
514
  .,.,
468
515
 
469
- module_eval(<<'.,.,', 'mvinl.y', 82)
516
+ module_eval(<<'.,.,', 'mvinl.y', 92)
470
517
  def _reduce_31(val, _values)
471
- evaluate_pn(val[1], val[2])
518
+ val[0].to_f
472
519
  end
473
520
  .,.,
474
521
 
475
- module_eval(<<'.,.,', 'mvinl.y', 85)
522
+ module_eval(<<'.,.,', 'mvinl.y', 93)
476
523
  def _reduce_32(val, _values)
477
- STATE[:depth] += 1
524
+ val[0]
478
525
  end
479
526
  .,.,
480
527
 
481
- module_eval(<<'.,.,', 'mvinl.y', 88)
528
+ module_eval(<<'.,.,', 'mvinl.y', 94)
482
529
  def _reduce_33(val, _values)
483
- STATE[:depth] -= 1
530
+ val[0].to_sym
484
531
  end
485
532
  .,.,
486
533
 
487
- module_eval(<<'.,.,', 'mvinl.y', 91)
534
+ module_eval(<<'.,.,', 'mvinl.y', 97)
488
535
  def _reduce_34(val, _values)
489
- Array.new
536
+ val[0]
490
537
  end
491
538
  .,.,
492
539
 
493
- module_eval(<<'.,.,', 'mvinl.y', 92)
540
+ module_eval(<<'.,.,', 'mvinl.y', 98)
494
541
  def _reduce_35(val, _values)
495
- val[0] << val[1]
542
+ "#{val[0]} #{val[1]}"
496
543
  end
497
544
  .,.,
498
545
 
499
- module_eval(<<'.,.,', 'mvinl.y', 93)
546
+ module_eval(<<'.,.,', 'mvinl.y', 103)
500
547
  def _reduce_36(val, _values)
501
- val[0] << val[1]
548
+ @context.define_function(val[2], val[3], val[4])
549
+
502
550
  end
503
551
  .,.,
504
552
 
505
- module_eval(<<'.,.,', 'mvinl.y', 94)
553
+ module_eval(<<'.,.,', 'mvinl.y', 107)
506
554
  def _reduce_37(val, _values)
507
- val[0] << val[1]
555
+ [val[1], *val[2]]
508
556
  end
509
557
  .,.,
510
558
 
511
- module_eval(<<'.,.,', 'mvinl.y', 97)
559
+ module_eval(<<'.,.,', 'mvinl.y', 108)
512
560
  def _reduce_38(val, _values)
513
- Array.new
561
+ [val[1], *val[2]]
514
562
  end
515
563
  .,.,
516
564
 
517
- module_eval(<<'.,.,', 'mvinl.y', 98)
565
+ module_eval(<<'.,.,', 'mvinl.y', 111)
518
566
  def _reduce_39(val, _values)
519
- val[0] << val[1]
567
+ evaluate_pn(val[1], val[2])
520
568
  end
521
569
  .,.,
522
570
 
523
- module_eval(<<'.,.,', 'mvinl.y', 99)
571
+ module_eval(<<'.,.,', 'mvinl.y', 112)
524
572
  def _reduce_40(val, _values)
525
- val[0] << val[1]
573
+ evaluate_pn(val[1], val[2])
526
574
  end
527
575
  .,.,
528
576
 
529
- module_eval(<<'.,.,', 'mvinl.y', 100)
577
+ module_eval(<<'.,.,', 'mvinl.y', 115)
530
578
  def _reduce_41(val, _values)
531
- val[0] << val[1]
579
+ @context.state[:depth] += 1
532
580
  end
533
581
  .,.,
534
582
 
535
- module_eval(<<'.,.,', 'mvinl.y', 103)
583
+ module_eval(<<'.,.,', 'mvinl.y', 118)
536
584
  def _reduce_42(val, _values)
537
- val[0].to_sym
585
+ @context.state[:depth] -= 1
538
586
  end
539
587
  .,.,
540
588
 
541
- module_eval(<<'.,.,', 'mvinl.y', 106)
589
+ module_eval(<<'.,.,', 'mvinl.y', 121)
542
590
  def _reduce_43(val, _values)
591
+ Array.new
592
+ end
593
+ .,.,
594
+
595
+ module_eval(<<'.,.,', 'mvinl.y', 122)
596
+ def _reduce_44(val, _values)
597
+ val[0] << val[1]
598
+ end
599
+ .,.,
600
+
601
+ module_eval(<<'.,.,', 'mvinl.y', 123)
602
+ def _reduce_45(val, _values)
603
+ val[0] << val[1]
604
+ end
605
+ .,.,
606
+
607
+ module_eval(<<'.,.,', 'mvinl.y', 124)
608
+ def _reduce_46(val, _values)
609
+ val[0] << { con: val[1] }
610
+ end
611
+ .,.,
612
+
613
+ module_eval(<<'.,.,', 'mvinl.y', 125)
614
+ def _reduce_47(val, _values)
615
+ val[0] << { var: val[1] }
616
+ end
617
+ .,.,
618
+
619
+ module_eval(<<'.,.,', 'mvinl.y', 126)
620
+ def _reduce_48(val, _values)
621
+ val[0] << val[1]
622
+ end
623
+ .,.,
624
+
625
+ module_eval(<<'.,.,', 'mvinl.y', 129)
626
+ def _reduce_49(val, _values)
627
+ Array.new
628
+ end
629
+ .,.,
630
+
631
+ module_eval(<<'.,.,', 'mvinl.y', 130)
632
+ def _reduce_50(val, _values)
633
+ val[0] << val[1]
634
+ end
635
+ .,.,
636
+
637
+ module_eval(<<'.,.,', 'mvinl.y', 131)
638
+ def _reduce_51(val, _values)
639
+ val[0] << val[1]
640
+ end
641
+ .,.,
642
+
643
+ module_eval(<<'.,.,', 'mvinl.y', 132)
644
+ def _reduce_52(val, _values)
645
+ val[0] << val[1]
646
+ end
647
+ .,.,
648
+
649
+ module_eval(<<'.,.,', 'mvinl.y', 135)
650
+ def _reduce_53(val, _values)
651
+ val[0].to_sym
652
+ end
653
+ .,.,
654
+
655
+ module_eval(<<'.,.,', 'mvinl.y', 138)
656
+ def _reduce_54(val, _values)
543
657
  val[0].to_sym
544
658
  end
545
659
  .,.,