delorean_lang 0.1.01 → 0.1.02
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/lib/delorean/delorean.rb +6 -1
- data/lib/delorean/delorean.treetop +1 -1
- data/lib/delorean/nodes.rb +4 -10
- data/lib/delorean/version.rb +1 -1
- data/spec/parse_spec.rb +3 -1
- metadata +1 -1
data/lib/delorean/delorean.rb
CHANGED
|
@@ -2463,7 +2463,12 @@ module Delorean
|
|
|
2463
2463
|
end
|
|
2464
2464
|
s9 << r13
|
|
2465
2465
|
if r13
|
|
2466
|
-
|
|
2466
|
+
r16 = _nt_kw_args
|
|
2467
|
+
if r16
|
|
2468
|
+
r15 = r16
|
|
2469
|
+
else
|
|
2470
|
+
r15 = instantiate_node(SyntaxNode,input, index...index)
|
|
2471
|
+
end
|
|
2467
2472
|
s9 << r15
|
|
2468
2473
|
end
|
|
2469
2474
|
end
|
|
@@ -108,7 +108,7 @@ grammar Delorean
|
|
|
108
108
|
end
|
|
109
109
|
|
|
110
110
|
rule kw_args
|
|
111
|
-
k:(i:identifier ':' sp?)? arg0:expression args_rest:(sp? ',' sp? al:kw_args)? <KwArgs>
|
|
111
|
+
k:(i:identifier ':' sp?)? arg0:expression args_rest:(sp? ',' sp? al:kw_args?)? <KwArgs>
|
|
112
112
|
end
|
|
113
113
|
|
|
114
114
|
rule number
|
data/lib/delorean/nodes.rb
CHANGED
|
@@ -297,10 +297,6 @@ eos
|
|
|
297
297
|
end
|
|
298
298
|
|
|
299
299
|
def rewrite(context, node_name)
|
|
300
|
-
do_rewrite(context, node_name)
|
|
301
|
-
end
|
|
302
|
-
|
|
303
|
-
def do_rewrite(context, node_name, mname="nil")
|
|
304
300
|
args, kw = al.text_value.empty? ? [[], {}] : al.rewrite(context)
|
|
305
301
|
|
|
306
302
|
raise "No positional arguments to node call" unless
|
|
@@ -308,7 +304,7 @@ eos
|
|
|
308
304
|
|
|
309
305
|
kw_str = '{' + kw.map {|k, v| "'#{k}' => #{v}" }.join(',') + '}'
|
|
310
306
|
|
|
311
|
-
"_node_call(#{node_name},
|
|
307
|
+
"_node_call(#{node_name}, nil, _e, #{kw_str})"
|
|
312
308
|
end
|
|
313
309
|
end
|
|
314
310
|
|
|
@@ -394,8 +390,7 @@ eos
|
|
|
394
390
|
context.parse_define_var(i.text_value)
|
|
395
391
|
res += ".select{|#{i.rewrite(context)}| (#{ifexp.e3.rewrite(context)}) }" if
|
|
396
392
|
defined?(ifexp.e3)
|
|
397
|
-
res += ".map{"
|
|
398
|
-
res += "|#{i.rewrite(context)}| (#{e2.rewrite(context)}) }"
|
|
393
|
+
res += ".map{|#{i.rewrite(context)}| (#{e2.rewrite(context)}) }"
|
|
399
394
|
context.parse_undef_var(i.text_value)
|
|
400
395
|
res
|
|
401
396
|
end
|
|
@@ -427,8 +422,7 @@ eos
|
|
|
427
422
|
iw = i.rewrite(context)
|
|
428
423
|
res += ".select{|#{iw}| (#{ifexp.ei.rewrite(context)}) }" if
|
|
429
424
|
defined?(ifexp.ei)
|
|
430
|
-
res += ".inject({}){"
|
|
431
|
-
res += "|_h#{iw}, #{iw}| "+
|
|
425
|
+
res += ".inject({}){|_h#{iw}, #{iw}| " +
|
|
432
426
|
"_h#{iw}[#{el.rewrite(context)}]=(#{er.rewrite(context)}); _h#{iw}}"
|
|
433
427
|
context.parse_undef_var(i.text_value)
|
|
434
428
|
res
|
|
@@ -454,7 +448,7 @@ eos
|
|
|
454
448
|
def rewrite(context)
|
|
455
449
|
arg0_rw = arg0.rewrite(context)
|
|
456
450
|
|
|
457
|
-
if defined?(args_rest.al)
|
|
451
|
+
if defined?(args_rest.al) && !args_rest.al.text_value.empty?
|
|
458
452
|
args, kw = args_rest.al.rewrite(context)
|
|
459
453
|
else
|
|
460
454
|
args, kw = [], {}
|
data/lib/delorean/version.rb
CHANGED
data/spec/parse_spec.rb
CHANGED