ruby_parser 3.6.6 → 3.7.0
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.
- 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
|