ruby_parser 3.6.6 → 3.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.autotest +12 -2
- data/History.txt +18 -0
- data/Manifest.txt +3 -0
- data/Rakefile +33 -6
- data/lib/ruby18_parser.rb +8 -5
- data/lib/ruby18_parser.y +4 -4
- data/lib/ruby19_parser.rb +12 -9
- data/lib/ruby19_parser.y +8 -8
- data/lib/ruby20_parser.rb +87 -73
- data/lib/ruby20_parser.y +27 -15
- data/lib/ruby21_parser.rb +27 -14
- data/lib/ruby21_parser.y +26 -16
- data/lib/ruby22_parser.rb +6792 -0
- data/lib/ruby22_parser.y +2369 -0
- data/lib/ruby_lexer.rb +44 -11
- data/lib/ruby_lexer.rex +3 -1
- data/lib/ruby_lexer.rex.rb +4 -0
- data/lib/ruby_parser.rb +1 -0
- data/lib/ruby_parser.yy +2456 -0
- data/lib/ruby_parser_extras.rb +10 -2
- data/test/test_ruby_lexer.rb +9 -7
- data/test/test_ruby_parser.rb +151 -33
- metadata +5 -16
- metadata.gz.sig +3 -2
data/lib/ruby20_parser.y
CHANGED
@@ -163,7 +163,7 @@ rule
|
|
163
163
|
debug20 3
|
164
164
|
yyerror "END in method; use at_exit"
|
165
165
|
end
|
166
|
-
result = new_iter s(:postexe),
|
166
|
+
result = new_iter s(:postexe), 0, val[2]
|
167
167
|
}
|
168
168
|
| command_asgn
|
169
169
|
| mlhs tEQL command_call
|
@@ -582,7 +582,8 @@ rule
|
|
582
582
|
| tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ
|
583
583
|
| tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2
|
584
584
|
| tSTAR | tDIVIDE | tPERCENT | tPOW | tDSTAR | tBANG | tTILDE
|
585
|
-
| tUPLUS | tUMINUS |
|
585
|
+
| tUPLUS | tUMINUS | tAREF | tASET | tBACK_REF2
|
586
|
+
| tUBANG
|
586
587
|
|
587
588
|
reswords: k__LINE__ | k__FILE__ | k__ENCODING__ | klBEGIN | klEND
|
588
589
|
| kALIAS | kAND | kBEGIN | kBREAK | kCASE
|
@@ -689,9 +690,10 @@ rule
|
|
689
690
|
| tUMINUS_NUM tFLOAT tPOW arg
|
690
691
|
{
|
691
692
|
result = new_call(new_call(s(:lit, val[1]), :"**", argl(val[3])), :"-@")
|
693
|
+
## TODO: why is this 2.0 only?
|
692
694
|
debug20 12, val, result
|
693
695
|
}
|
694
|
-
|
696
|
+
| tUPLUS arg
|
695
697
|
{
|
696
698
|
result = new_call val[1], :"+@"
|
697
699
|
}
|
@@ -1137,18 +1139,22 @@ rule
|
|
1137
1139
|
}
|
1138
1140
|
| kDEF fname
|
1139
1141
|
{
|
1140
|
-
result = self.in_def
|
1142
|
+
result = [self.in_def, self.lexer.cmdarg.stack.dup]
|
1141
1143
|
|
1142
1144
|
self.comments.push self.lexer.comments
|
1143
1145
|
self.in_def = true
|
1144
1146
|
self.env.extend
|
1147
|
+
# TODO: local->cmdargs = cmdarg_stack;
|
1148
|
+
# TODO: port local_push_gen and local_pop_gen
|
1149
|
+
lexer.cmdarg.stack.replace [false]
|
1145
1150
|
}
|
1146
1151
|
f_arglist bodystmt kEND
|
1147
1152
|
{
|
1148
|
-
in_def = val[2]
|
1153
|
+
in_def, cmdarg = val[2]
|
1149
1154
|
|
1150
1155
|
result = new_defn val
|
1151
1156
|
|
1157
|
+
lexer.cmdarg.stack.replace cmdarg
|
1152
1158
|
self.env.unextend
|
1153
1159
|
self.in_def = in_def
|
1154
1160
|
self.lexer.comments # we don't care about comments in the body
|
@@ -1389,18 +1395,17 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1389
1395
|
result = args val
|
1390
1396
|
}
|
1391
1397
|
|
1392
|
-
opt_block_param: none
|
1398
|
+
opt_block_param: none { result = 0 }
|
1393
1399
|
| block_param_def
|
1394
1400
|
|
1395
1401
|
block_param_def: tPIPE opt_bv_decl tPIPE
|
1396
1402
|
{
|
1397
1403
|
result = args val
|
1398
|
-
result = 0 if result == s(:args)
|
1399
1404
|
}
|
1400
1405
|
| tOROP
|
1401
1406
|
{
|
1402
|
-
result = 0
|
1403
1407
|
self.lexer.command_start = true
|
1408
|
+
result = s(:args)
|
1404
1409
|
}
|
1405
1410
|
| tPIPE block_param opt_bv_decl tPIPE
|
1406
1411
|
{
|
@@ -1441,8 +1446,6 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1441
1446
|
lpar, args, body = val
|
1442
1447
|
lexer.lpar_beg = lpar
|
1443
1448
|
|
1444
|
-
args = 0 if args == s(:args)
|
1445
|
-
|
1446
1449
|
call = new_call nil, :lambda
|
1447
1450
|
result = new_iter call, args, body
|
1448
1451
|
self.env.unextend
|
@@ -1455,6 +1458,7 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1455
1458
|
| f_args
|
1456
1459
|
{
|
1457
1460
|
result = val[0]
|
1461
|
+
result = 0 if result == s(:args)
|
1458
1462
|
}
|
1459
1463
|
|
1460
1464
|
lambda_body: tLAMBEG compstmt tRCURLY
|
@@ -1488,8 +1492,8 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1488
1492
|
block_call: command do_block
|
1489
1493
|
{
|
1490
1494
|
# TODO:
|
1491
|
-
|
1492
|
-
|
1495
|
+
## if (nd_type($1) == NODE_YIELD) {
|
1496
|
+
## compile_error(PARSER_ARG "block given to yield");
|
1493
1497
|
|
1494
1498
|
syntax_error "Both block arg and actual block given." if
|
1495
1499
|
val[0].block_pass?
|
@@ -1587,7 +1591,7 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1587
1591
|
self.env.extend :dynamic
|
1588
1592
|
result = self.lexer.lineno
|
1589
1593
|
}
|
1590
|
-
|
1594
|
+
opt_block_param
|
1591
1595
|
{
|
1592
1596
|
result = nil # self.env.dynamic.keys
|
1593
1597
|
}
|
@@ -1835,7 +1839,9 @@ regexp_contents: none
|
|
1835
1839
|
lexer.brace_nest,
|
1836
1840
|
lexer.string_nest, # TODO: remove
|
1837
1841
|
lexer.cond.store,
|
1838
|
-
lexer.cmdarg.store
|
1842
|
+
lexer.cmdarg.store,
|
1843
|
+
lexer.lex_state,
|
1844
|
+
]
|
1839
1845
|
|
1840
1846
|
lexer.lex_strterm = nil
|
1841
1847
|
lexer.brace_nest = 0
|
@@ -1848,7 +1854,7 @@ regexp_contents: none
|
|
1848
1854
|
# TODO: tRCURLY -> tSTRING_DEND
|
1849
1855
|
_, memo, stmt, _ = val
|
1850
1856
|
|
1851
|
-
lex_strterm, brace_nest, string_nest, oldcond, oldcmdarg = memo
|
1857
|
+
lex_strterm, brace_nest, string_nest, oldcond, oldcmdarg, oldlex_state = memo
|
1852
1858
|
|
1853
1859
|
lexer.lex_strterm = lex_strterm
|
1854
1860
|
lexer.brace_nest = brace_nest
|
@@ -1857,6 +1863,8 @@ regexp_contents: none
|
|
1857
1863
|
lexer.cond.restore oldcond
|
1858
1864
|
lexer.cmdarg.restore oldcmdarg
|
1859
1865
|
|
1866
|
+
lexer.lex_state = oldlex_state
|
1867
|
+
|
1860
1868
|
case stmt
|
1861
1869
|
when Sexp then
|
1862
1870
|
case stmt[0]
|
@@ -1990,9 +1998,13 @@ keyword_variable: kNIL { result = s(:nil) }
|
|
1990
1998
|
result = val[1]
|
1991
1999
|
self.lexer.lex_state = :expr_beg
|
1992
2000
|
self.lexer.command_start = true
|
2001
|
+
# TODO:
|
2002
|
+
# $<num>$ = parser->parser_in_kwarg;
|
2003
|
+
# parser->parser_in_kwarg = 1;
|
1993
2004
|
}
|
1994
2005
|
| f_args term
|
1995
2006
|
{
|
2007
|
+
# TODO: parser->parser_in_kwarg = $<num>1;
|
1996
2008
|
result = val[0]
|
1997
2009
|
self.lexer.lex_state = :expr_beg
|
1998
2010
|
self.lexer.command_start = true
|
data/lib/ruby21_parser.rb
CHANGED
@@ -2681,7 +2681,7 @@ racc_reduce_table = [
|
|
2681
2681
|
2, 283, :_reduce_389,
|
2682
2682
|
4, 283, :_reduce_390,
|
2683
2683
|
1, 283, :_reduce_391,
|
2684
|
-
1, 186, :
|
2684
|
+
1, 186, :_reduce_392,
|
2685
2685
|
1, 186, :_reduce_none,
|
2686
2686
|
3, 287, :_reduce_394,
|
2687
2687
|
1, 287, :_reduce_395,
|
@@ -3588,7 +3588,7 @@ def _reduce_28(val, _values, result)
|
|
3588
3588
|
debug20 3
|
3589
3589
|
yyerror "END in method; use at_exit"
|
3590
3590
|
end
|
3591
|
-
result = new_iter s(:postexe),
|
3591
|
+
result = new_iter s(:postexe), 0, val[2]
|
3592
3592
|
|
3593
3593
|
result
|
3594
3594
|
end
|
@@ -5075,20 +5075,24 @@ def _reduce_325(val, _values, result)
|
|
5075
5075
|
end
|
5076
5076
|
|
5077
5077
|
def _reduce_326(val, _values, result)
|
5078
|
-
result = self.in_def
|
5078
|
+
result = [self.in_def, self.lexer.cmdarg.stack.dup]
|
5079
5079
|
|
5080
5080
|
self.comments.push self.lexer.comments
|
5081
5081
|
self.in_def = true
|
5082
5082
|
self.env.extend
|
5083
|
+
# TODO: local->cmdargs = cmdarg_stack;
|
5084
|
+
# TODO: port local_push_gen and local_pop_gen
|
5085
|
+
lexer.cmdarg.stack.replace [false]
|
5083
5086
|
|
5084
5087
|
result
|
5085
5088
|
end
|
5086
5089
|
|
5087
5090
|
def _reduce_327(val, _values, result)
|
5088
|
-
in_def = val[2]
|
5091
|
+
in_def, cmdarg = val[2]
|
5089
5092
|
|
5090
5093
|
result = new_defn val
|
5091
5094
|
|
5095
|
+
lexer.cmdarg.stack.replace cmdarg
|
5092
5096
|
self.env.unextend
|
5093
5097
|
self.in_def = in_def
|
5094
5098
|
self.lexer.comments # we don't care about comments in the body
|
@@ -5424,20 +5428,22 @@ def _reduce_391(val, _values, result)
|
|
5424
5428
|
result
|
5425
5429
|
end
|
5426
5430
|
|
5427
|
-
|
5431
|
+
def _reduce_392(val, _values, result)
|
5432
|
+
result = 0
|
5433
|
+
result
|
5434
|
+
end
|
5428
5435
|
|
5429
5436
|
# reduce 393 omitted
|
5430
5437
|
|
5431
5438
|
def _reduce_394(val, _values, result)
|
5432
5439
|
result = args val
|
5433
|
-
result = 0 if result == s(:args)
|
5434
5440
|
|
5435
5441
|
result
|
5436
5442
|
end
|
5437
5443
|
|
5438
5444
|
def _reduce_395(val, _values, result)
|
5439
|
-
result = 0
|
5440
5445
|
self.lexer.command_start = true
|
5446
|
+
result = s(:args)
|
5441
5447
|
|
5442
5448
|
result
|
5443
5449
|
end
|
@@ -5491,8 +5497,6 @@ def _reduce_404(val, _values, result)
|
|
5491
5497
|
lpar, args, body = val
|
5492
5498
|
lexer.lpar_beg = lpar
|
5493
5499
|
|
5494
|
-
args = 0 if args == s(:args)
|
5495
|
-
|
5496
5500
|
call = new_call nil, :lambda
|
5497
5501
|
result = new_iter call, args, body
|
5498
5502
|
self.env.unextend
|
@@ -5508,6 +5512,7 @@ end
|
|
5508
5512
|
|
5509
5513
|
def _reduce_406(val, _values, result)
|
5510
5514
|
result = val[0]
|
5515
|
+
result = 0 if result == s(:args)
|
5511
5516
|
|
5512
5517
|
result
|
5513
5518
|
end
|
@@ -5550,8 +5555,8 @@ end
|
|
5550
5555
|
|
5551
5556
|
def _reduce_412(val, _values, result)
|
5552
5557
|
# TODO:
|
5553
|
-
|
5554
|
-
|
5558
|
+
## if (nd_type($1) == NODE_YIELD) {
|
5559
|
+
## compile_error(PARSER_ARG "block given to yield");
|
5555
5560
|
|
5556
5561
|
syntax_error "Both block arg and actual block given." if
|
5557
5562
|
val[0].block_pass?
|
@@ -6004,7 +6009,9 @@ def _reduce_483(val, _values, result)
|
|
6004
6009
|
lexer.brace_nest,
|
6005
6010
|
lexer.string_nest, # TODO: remove
|
6006
6011
|
lexer.cond.store,
|
6007
|
-
lexer.cmdarg.store
|
6012
|
+
lexer.cmdarg.store,
|
6013
|
+
lexer.lex_state,
|
6014
|
+
]
|
6008
6015
|
|
6009
6016
|
lexer.lex_strterm = nil
|
6010
6017
|
lexer.brace_nest = 0
|
@@ -6019,7 +6026,7 @@ def _reduce_484(val, _values, result)
|
|
6019
6026
|
# TODO: tRCURLY -> tSTRING_END
|
6020
6027
|
_, memo, stmt, _ = val
|
6021
6028
|
|
6022
|
-
lex_strterm, brace_nest, string_nest, oldcond, oldcmdarg = memo
|
6029
|
+
lex_strterm, brace_nest, string_nest, oldcond, oldcmdarg, oldlex_state = memo
|
6023
6030
|
|
6024
6031
|
lexer.lex_strterm = lex_strterm
|
6025
6032
|
lexer.brace_nest = brace_nest
|
@@ -6028,6 +6035,8 @@ def _reduce_484(val, _values, result)
|
|
6028
6035
|
lexer.cond.restore oldcond
|
6029
6036
|
lexer.cmdarg.restore oldcmdarg
|
6030
6037
|
|
6038
|
+
lexer.lex_state = oldlex_state
|
6039
|
+
|
6031
6040
|
case stmt
|
6032
6041
|
when Sexp then
|
6033
6042
|
case stmt[0]
|
@@ -6107,7 +6116,7 @@ end
|
|
6107
6116
|
# reduce 496 omitted
|
6108
6117
|
|
6109
6118
|
def _reduce_497(val, _values, result)
|
6110
|
-
result = -val[1]
|
6119
|
+
result = -val[1] # TODO: pt_testcase
|
6111
6120
|
|
6112
6121
|
result
|
6113
6122
|
end
|
@@ -6238,11 +6247,15 @@ def _reduce_524(val, _values, result)
|
|
6238
6247
|
result = val[1]
|
6239
6248
|
self.lexer.lex_state = :expr_beg
|
6240
6249
|
self.lexer.command_start = true
|
6250
|
+
# TODO:
|
6251
|
+
# $<num>$ = parser->parser_in_kwarg;
|
6252
|
+
# parser->parser_in_kwarg = 1;
|
6241
6253
|
|
6242
6254
|
result
|
6243
6255
|
end
|
6244
6256
|
|
6245
6257
|
def _reduce_525(val, _values, result)
|
6258
|
+
# TODO: parser->parser_in_kwarg = $<num>1;
|
6246
6259
|
result = val[0]
|
6247
6260
|
self.lexer.lex_state = :expr_beg
|
6248
6261
|
self.lexer.command_start = true
|
data/lib/ruby21_parser.y
CHANGED
@@ -164,7 +164,7 @@ rule
|
|
164
164
|
debug20 3
|
165
165
|
yyerror "END in method; use at_exit"
|
166
166
|
end
|
167
|
-
result = new_iter s(:postexe),
|
167
|
+
result = new_iter s(:postexe), 0, val[2]
|
168
168
|
}
|
169
169
|
| command_asgn
|
170
170
|
| mlhs tEQL command_call
|
@@ -579,7 +579,7 @@ rule
|
|
579
579
|
| tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ
|
580
580
|
| tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2
|
581
581
|
| tSTAR | tDIVIDE | tPERCENT | tPOW | tDSTAR | tBANG | tTILDE
|
582
|
-
| tUPLUS | tUMINUS | tAREF
|
582
|
+
| tUPLUS | tUMINUS | tAREF | tASET | tBACK_REF2
|
583
583
|
|
584
584
|
reswords: k__LINE__ | k__FILE__ | k__ENCODING__ | klBEGIN | klEND
|
585
585
|
| kALIAS | kAND | kBEGIN | kBREAK | kCASE
|
@@ -683,7 +683,7 @@ rule
|
|
683
683
|
{
|
684
684
|
result = new_call(new_call(s(:lit, val[1]), :"**", argl(val[3])), :"-@")
|
685
685
|
}
|
686
|
-
|
686
|
+
| tUPLUS arg
|
687
687
|
{
|
688
688
|
result = new_call val[1], :"+@"
|
689
689
|
}
|
@@ -1138,18 +1138,22 @@ rule
|
|
1138
1138
|
}
|
1139
1139
|
| kDEF fname
|
1140
1140
|
{
|
1141
|
-
result = self.in_def
|
1141
|
+
result = [self.in_def, self.lexer.cmdarg.stack.dup]
|
1142
1142
|
|
1143
1143
|
self.comments.push self.lexer.comments
|
1144
1144
|
self.in_def = true
|
1145
1145
|
self.env.extend
|
1146
|
+
# TODO: local->cmdargs = cmdarg_stack;
|
1147
|
+
# TODO: port local_push_gen and local_pop_gen
|
1148
|
+
lexer.cmdarg.stack.replace [false]
|
1146
1149
|
}
|
1147
1150
|
f_arglist bodystmt kEND
|
1148
1151
|
{
|
1149
|
-
in_def = val[2]
|
1152
|
+
in_def, cmdarg = val[2]
|
1150
1153
|
|
1151
1154
|
result = new_defn val
|
1152
1155
|
|
1156
|
+
lexer.cmdarg.stack.replace cmdarg
|
1153
1157
|
self.env.unextend
|
1154
1158
|
self.in_def = in_def
|
1155
1159
|
self.lexer.comments # we don't care about comments in the body
|
@@ -1390,18 +1394,17 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1390
1394
|
result = args val
|
1391
1395
|
}
|
1392
1396
|
|
1393
|
-
opt_block_param: none
|
1397
|
+
opt_block_param: none { result = 0 }
|
1394
1398
|
| block_param_def
|
1395
1399
|
|
1396
1400
|
block_param_def: tPIPE opt_bv_decl tPIPE
|
1397
1401
|
{
|
1398
1402
|
result = args val
|
1399
|
-
result = 0 if result == s(:args)
|
1400
1403
|
}
|
1401
1404
|
| tOROP
|
1402
1405
|
{
|
1403
|
-
result = 0
|
1404
1406
|
self.lexer.command_start = true
|
1407
|
+
result = s(:args)
|
1405
1408
|
}
|
1406
1409
|
| tPIPE block_param opt_bv_decl tPIPE
|
1407
1410
|
{
|
@@ -1442,8 +1445,6 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1442
1445
|
lpar, args, body = val
|
1443
1446
|
lexer.lpar_beg = lpar
|
1444
1447
|
|
1445
|
-
args = 0 if args == s(:args)
|
1446
|
-
|
1447
1448
|
call = new_call nil, :lambda
|
1448
1449
|
result = new_iter call, args, body
|
1449
1450
|
self.env.unextend
|
@@ -1456,6 +1457,7 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1456
1457
|
| f_args
|
1457
1458
|
{
|
1458
1459
|
result = val[0]
|
1460
|
+
result = 0 if result == s(:args)
|
1459
1461
|
}
|
1460
1462
|
|
1461
1463
|
lambda_body: tLAMBEG compstmt tRCURLY
|
@@ -1489,8 +1491,8 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1489
1491
|
block_call: command do_block
|
1490
1492
|
{
|
1491
1493
|
# TODO:
|
1492
|
-
|
1493
|
-
|
1494
|
+
## if (nd_type($1) == NODE_YIELD) {
|
1495
|
+
## compile_error(PARSER_ARG "block given to yield");
|
1494
1496
|
|
1495
1497
|
syntax_error "Both block arg and actual block given." if
|
1496
1498
|
val[0].block_pass?
|
@@ -1588,7 +1590,7 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1588
1590
|
self.env.extend :dynamic
|
1589
1591
|
result = self.lexer.lineno
|
1590
1592
|
}
|
1591
|
-
|
1593
|
+
opt_block_param
|
1592
1594
|
{
|
1593
1595
|
result = nil # self.env.dynamic.keys
|
1594
1596
|
}
|
@@ -1836,7 +1838,9 @@ regexp_contents: none
|
|
1836
1838
|
lexer.brace_nest,
|
1837
1839
|
lexer.string_nest, # TODO: remove
|
1838
1840
|
lexer.cond.store,
|
1839
|
-
lexer.cmdarg.store
|
1841
|
+
lexer.cmdarg.store,
|
1842
|
+
lexer.lex_state,
|
1843
|
+
]
|
1840
1844
|
|
1841
1845
|
lexer.lex_strterm = nil
|
1842
1846
|
lexer.brace_nest = 0
|
@@ -1849,7 +1853,7 @@ regexp_contents: none
|
|
1849
1853
|
# TODO: tRCURLY -> tSTRING_END
|
1850
1854
|
_, memo, stmt, _ = val
|
1851
1855
|
|
1852
|
-
lex_strterm, brace_nest, string_nest, oldcond, oldcmdarg = memo
|
1856
|
+
lex_strterm, brace_nest, string_nest, oldcond, oldcmdarg, oldlex_state = memo
|
1853
1857
|
|
1854
1858
|
lexer.lex_strterm = lex_strterm
|
1855
1859
|
lexer.brace_nest = brace_nest
|
@@ -1858,6 +1862,8 @@ regexp_contents: none
|
|
1858
1862
|
lexer.cond.restore oldcond
|
1859
1863
|
lexer.cmdarg.restore oldcmdarg
|
1860
1864
|
|
1865
|
+
lexer.lex_state = oldlex_state
|
1866
|
+
|
1861
1867
|
case stmt
|
1862
1868
|
when Sexp then
|
1863
1869
|
case stmt[0]
|
@@ -1913,7 +1919,7 @@ regexp_contents: none
|
|
1913
1919
|
numeric: simple_numeric
|
1914
1920
|
| tUMINUS_NUM simple_numeric
|
1915
1921
|
{
|
1916
|
-
result = -val[1]
|
1922
|
+
result = -val[1] # TODO: pt_testcase
|
1917
1923
|
}
|
1918
1924
|
|
1919
1925
|
simple_numeric: tINTEGER
|
@@ -1991,9 +1997,13 @@ keyword_variable: kNIL { result = s(:nil) }
|
|
1991
1997
|
result = val[1]
|
1992
1998
|
self.lexer.lex_state = :expr_beg
|
1993
1999
|
self.lexer.command_start = true
|
2000
|
+
# TODO:
|
2001
|
+
# $<num>$ = parser->parser_in_kwarg;
|
2002
|
+
# parser->parser_in_kwarg = 1;
|
1994
2003
|
}
|
1995
2004
|
| f_args term
|
1996
2005
|
{
|
2006
|
+
# TODO: parser->parser_in_kwarg = $<num>1;
|
1997
2007
|
result = val[0]
|
1998
2008
|
self.lexer.lex_state = :expr_beg
|
1999
2009
|
self.lexer.command_start = true
|