delorean_lang 0.1.01 → 0.1.02
Sign up to get free protection for your applications and to get access to all the features.
- 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