parser 2.4.0.2 → 2.5.0.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
- data/.travis.yml +5 -6
- data/CHANGELOG.md +35 -1
- data/Gemfile +2 -0
- data/README.md +1 -2
- data/Rakefile +2 -1
- data/bin/ruby-parse +2 -1
- data/bin/ruby-rewrite +2 -1
- data/lib/gauntlet_parser.rb +2 -0
- data/lib/parser.rb +16 -17
- data/lib/parser/all.rb +2 -0
- data/lib/parser/ast/node.rb +2 -0
- data/lib/parser/ast/processor.rb +2 -0
- data/lib/parser/base.rb +6 -12
- data/lib/parser/builders/default.rb +28 -47
- data/lib/parser/clobbering_error.rb +2 -0
- data/lib/parser/context.rb +42 -0
- data/lib/parser/current.rb +4 -20
- data/lib/parser/deprecation.rb +13 -0
- data/lib/parser/diagnostic.rb +3 -3
- data/lib/parser/diagnostic/engine.rb +2 -0
- data/lib/parser/lexer.rl +122 -60
- data/lib/parser/lexer/dedenter.rb +2 -0
- data/lib/parser/lexer/explanation.rb +2 -0
- data/lib/parser/lexer/literal.rb +4 -9
- data/lib/parser/lexer/stack_state.rb +4 -1
- data/lib/parser/macruby.y +32 -17
- data/lib/parser/messages.rb +14 -0
- data/lib/parser/meta.rb +2 -0
- data/lib/parser/rewriter.rb +30 -44
- data/lib/parser/ruby18.y +20 -13
- data/lib/parser/ruby19.y +32 -17
- data/lib/parser/ruby20.y +33 -18
- data/lib/parser/ruby21.y +32 -17
- data/lib/parser/ruby22.y +32 -17
- data/lib/parser/ruby23.y +32 -17
- data/lib/parser/ruby24.y +63 -46
- data/lib/parser/ruby25.y +72 -48
- data/lib/parser/rubymotion.y +33 -18
- data/lib/parser/runner.rb +4 -7
- data/lib/parser/runner/ruby_parse.rb +10 -0
- data/lib/parser/runner/ruby_rewrite.rb +2 -0
- data/lib/parser/source/buffer.rb +19 -24
- data/lib/parser/source/comment.rb +2 -0
- data/lib/parser/source/comment/associator.rb +2 -0
- data/lib/parser/source/map.rb +2 -0
- data/lib/parser/source/map/collection.rb +2 -0
- data/lib/parser/source/map/condition.rb +2 -0
- data/lib/parser/source/map/constant.rb +2 -0
- data/lib/parser/source/map/definition.rb +2 -0
- data/lib/parser/source/map/for.rb +2 -0
- data/lib/parser/source/map/heredoc.rb +2 -0
- data/lib/parser/source/map/keyword.rb +2 -0
- data/lib/parser/source/map/objc_kwarg.rb +2 -0
- data/lib/parser/source/map/operator.rb +2 -0
- data/lib/parser/source/map/rescue_body.rb +2 -0
- data/lib/parser/source/map/send.rb +2 -0
- data/lib/parser/source/map/ternary.rb +2 -0
- data/lib/parser/source/map/variable.rb +2 -0
- data/lib/parser/source/range.rb +81 -13
- data/lib/parser/source/rewriter.rb +48 -10
- data/lib/parser/source/rewriter/action.rb +2 -0
- data/lib/parser/source/tree_rewriter.rb +301 -0
- data/lib/parser/source/tree_rewriter/action.rb +133 -0
- data/lib/parser/static_environment.rb +2 -0
- data/lib/parser/syntax_error.rb +2 -0
- data/lib/parser/tree_rewriter.rb +133 -0
- data/lib/parser/version.rb +3 -1
- data/parser.gemspec +4 -1
- data/test/bug_163/fixtures/input.rb +2 -0
- data/test/bug_163/fixtures/output.rb +2 -0
- data/test/bug_163/rewriter.rb +2 -0
- data/test/helper.rb +7 -7
- data/test/parse_helper.rb +57 -10
- data/test/racc_coverage_helper.rb +2 -0
- data/test/test_base.rb +2 -0
- data/test/test_current.rb +2 -4
- data/test/test_diagnostic.rb +3 -1
- data/test/test_diagnostic_engine.rb +2 -0
- data/test/test_encoding.rb +61 -49
- data/test/test_lexer.rb +164 -77
- data/test/test_lexer_stack_state.rb +2 -0
- data/test/test_parse_helper.rb +8 -8
- data/test/test_parser.rb +613 -51
- data/test/test_runner_rewrite.rb +47 -0
- data/test/test_source_buffer.rb +22 -10
- data/test/test_source_comment.rb +2 -0
- data/test/test_source_comment_associator.rb +2 -0
- data/test/test_source_map.rb +2 -0
- data/test/test_source_range.rb +92 -45
- data/test/test_source_rewriter.rb +3 -1
- data/test/test_source_rewriter_action.rb +2 -0
- data/test/test_source_tree_rewriter.rb +177 -0
- data/test/test_static_environment.rb +2 -0
- data/test/using_tree_rewriter/fixtures/input.rb +3 -0
- data/test/using_tree_rewriter/fixtures/output.rb +3 -0
- data/test/using_tree_rewriter/using_tree_rewriter.rb +9 -0
- metadata +21 -10
- data/lib/parser/compatibility/ruby1_8.rb +0 -20
- data/lib/parser/compatibility/ruby1_9.rb +0 -32
- data/test/bug_163/test_runner_rewrite.rb +0 -35
data/lib/parser/ruby22.y
CHANGED
@@ -279,12 +279,14 @@ rule
|
|
279
279
|
cmd_brace_block: tLBRACE_ARG
|
280
280
|
{
|
281
281
|
@static_env.extend_dynamic
|
282
|
+
@context.push(:block)
|
282
283
|
}
|
283
284
|
opt_block_param compstmt tRCURLY
|
284
285
|
{
|
285
286
|
result = [ val[0], val[2], val[3], val[4] ]
|
286
287
|
|
287
288
|
@static_env.unextend
|
289
|
+
@context.pop
|
288
290
|
}
|
289
291
|
|
290
292
|
fcall: operation
|
@@ -1108,10 +1110,11 @@ rule
|
|
1108
1110
|
{
|
1109
1111
|
@static_env.extend_static
|
1110
1112
|
@lexer.push_cmdarg
|
1113
|
+
@context.push(:class)
|
1111
1114
|
}
|
1112
1115
|
bodystmt kEND
|
1113
1116
|
{
|
1114
|
-
if
|
1117
|
+
if @context.indirectly_in_def?
|
1115
1118
|
diagnostic :error, :class_in_def, nil, val[0]
|
1116
1119
|
end
|
1117
1120
|
|
@@ -1122,14 +1125,13 @@ rule
|
|
1122
1125
|
|
1123
1126
|
@lexer.pop_cmdarg
|
1124
1127
|
@static_env.unextend
|
1128
|
+
@context.pop
|
1125
1129
|
}
|
1126
1130
|
| kCLASS tLSHFT expr term
|
1127
1131
|
{
|
1128
|
-
result = @def_level
|
1129
|
-
@def_level = 0
|
1130
|
-
|
1131
1132
|
@static_env.extend_static
|
1132
1133
|
@lexer.push_cmdarg
|
1134
|
+
@context.push(:sclass)
|
1133
1135
|
}
|
1134
1136
|
bodystmt kEND
|
1135
1137
|
{
|
@@ -1138,8 +1140,7 @@ rule
|
|
1138
1140
|
|
1139
1141
|
@lexer.pop_cmdarg
|
1140
1142
|
@static_env.unextend
|
1141
|
-
|
1142
|
-
@def_level = val[4]
|
1143
|
+
@context.pop
|
1143
1144
|
}
|
1144
1145
|
| kMODULE cpath
|
1145
1146
|
{
|
@@ -1148,7 +1149,7 @@ rule
|
|
1148
1149
|
}
|
1149
1150
|
bodystmt kEND
|
1150
1151
|
{
|
1151
|
-
if
|
1152
|
+
if @context.indirectly_in_def?
|
1152
1153
|
diagnostic :error, :module_in_def, nil, val[0]
|
1153
1154
|
end
|
1154
1155
|
|
@@ -1160,9 +1161,9 @@ rule
|
|
1160
1161
|
}
|
1161
1162
|
| kDEF fname
|
1162
1163
|
{
|
1163
|
-
@def_level += 1
|
1164
1164
|
@static_env.extend_static
|
1165
1165
|
@lexer.push_cmdarg
|
1166
|
+
@context.push(:def)
|
1166
1167
|
}
|
1167
1168
|
f_arglist bodystmt kEND
|
1168
1169
|
{
|
@@ -1171,7 +1172,7 @@ rule
|
|
1171
1172
|
|
1172
1173
|
@lexer.pop_cmdarg
|
1173
1174
|
@static_env.unextend
|
1174
|
-
@
|
1175
|
+
@context.pop
|
1175
1176
|
}
|
1176
1177
|
| kDEF singleton dot_or_colon
|
1177
1178
|
{
|
@@ -1179,9 +1180,9 @@ rule
|
|
1179
1180
|
}
|
1180
1181
|
fname
|
1181
1182
|
{
|
1182
|
-
@def_level += 1
|
1183
1183
|
@static_env.extend_static
|
1184
1184
|
@lexer.push_cmdarg
|
1185
|
+
@context.push(:defs)
|
1185
1186
|
}
|
1186
1187
|
f_arglist bodystmt kEND
|
1187
1188
|
{
|
@@ -1190,7 +1191,7 @@ rule
|
|
1190
1191
|
|
1191
1192
|
@lexer.pop_cmdarg
|
1192
1193
|
@static_env.unextend
|
1193
|
-
@
|
1194
|
+
@context.pop
|
1194
1195
|
}
|
1195
1196
|
| kBREAK
|
1196
1197
|
{
|
@@ -1489,24 +1490,36 @@ opt_block_args_tail:
|
|
1489
1490
|
result = @builder.args(nil, val[0], nil)
|
1490
1491
|
}
|
1491
1492
|
|
1492
|
-
lambda_body: tLAMBEG
|
1493
|
+
lambda_body: tLAMBEG
|
1494
|
+
{
|
1495
|
+
@context.push(:lambda)
|
1496
|
+
}
|
1497
|
+
compstmt tRCURLY
|
1493
1498
|
{
|
1494
|
-
result = [ val[0], val[
|
1499
|
+
result = [ val[0], val[2], val[3] ]
|
1500
|
+
@context.pop
|
1495
1501
|
}
|
1496
|
-
| kDO_LAMBDA
|
1502
|
+
| kDO_LAMBDA
|
1497
1503
|
{
|
1498
|
-
|
1504
|
+
@context.push(:lambda)
|
1505
|
+
}
|
1506
|
+
compstmt kEND
|
1507
|
+
{
|
1508
|
+
result = [ val[0], val[2], val[3] ]
|
1509
|
+
@context.pop
|
1499
1510
|
}
|
1500
1511
|
|
1501
1512
|
do_block: kDO_BLOCK
|
1502
1513
|
{
|
1503
1514
|
@static_env.extend_dynamic
|
1515
|
+
@context.push(:block)
|
1504
1516
|
}
|
1505
1517
|
opt_block_param compstmt kEND
|
1506
1518
|
{
|
1507
1519
|
result = [ val[0], val[2], val[3], val[4] ]
|
1508
1520
|
|
1509
1521
|
@static_env.unextend
|
1522
|
+
@context.pop
|
1510
1523
|
}
|
1511
1524
|
|
1512
1525
|
block_call: command do_block
|
@@ -1593,22 +1606,26 @@ opt_block_args_tail:
|
|
1593
1606
|
brace_block: tLCURLY
|
1594
1607
|
{
|
1595
1608
|
@static_env.extend_dynamic
|
1609
|
+
@context.push(:block)
|
1596
1610
|
}
|
1597
1611
|
opt_block_param compstmt tRCURLY
|
1598
1612
|
{
|
1599
1613
|
result = [ val[0], val[2], val[3], val[4] ]
|
1600
1614
|
|
1601
1615
|
@static_env.unextend
|
1616
|
+
@context.pop
|
1602
1617
|
}
|
1603
1618
|
| kDO
|
1604
1619
|
{
|
1605
1620
|
@static_env.extend_dynamic
|
1621
|
+
@context.push(:block)
|
1606
1622
|
}
|
1607
1623
|
opt_block_param compstmt kEND
|
1608
1624
|
{
|
1609
1625
|
result = [ val[0], val[2], val[3], val[4] ]
|
1610
1626
|
|
1611
1627
|
@static_env.unextend
|
1628
|
+
@context.pop
|
1612
1629
|
}
|
1613
1630
|
|
1614
1631
|
case_body: kWHEN args then compstmt cases
|
@@ -2336,8 +2353,6 @@ end
|
|
2336
2353
|
|
2337
2354
|
require 'parser'
|
2338
2355
|
|
2339
|
-
Parser.check_for_encoding_support
|
2340
|
-
|
2341
2356
|
---- inner
|
2342
2357
|
|
2343
2358
|
def version
|
data/lib/parser/ruby23.y
CHANGED
@@ -279,12 +279,14 @@ rule
|
|
279
279
|
cmd_brace_block: tLBRACE_ARG
|
280
280
|
{
|
281
281
|
@static_env.extend_dynamic
|
282
|
+
@context.push(:block)
|
282
283
|
}
|
283
284
|
opt_block_param compstmt tRCURLY
|
284
285
|
{
|
285
286
|
result = [ val[0], val[2], val[3], val[4] ]
|
286
287
|
|
287
288
|
@static_env.unextend
|
289
|
+
@context.pop
|
288
290
|
}
|
289
291
|
|
290
292
|
fcall: operation
|
@@ -1108,10 +1110,11 @@ rule
|
|
1108
1110
|
{
|
1109
1111
|
@static_env.extend_static
|
1110
1112
|
@lexer.push_cmdarg
|
1113
|
+
@context.push(:class)
|
1111
1114
|
}
|
1112
1115
|
bodystmt kEND
|
1113
1116
|
{
|
1114
|
-
if
|
1117
|
+
if @context.indirectly_in_def?
|
1115
1118
|
diagnostic :error, :class_in_def, nil, val[0]
|
1116
1119
|
end
|
1117
1120
|
|
@@ -1122,14 +1125,13 @@ rule
|
|
1122
1125
|
|
1123
1126
|
@lexer.pop_cmdarg
|
1124
1127
|
@static_env.unextend
|
1128
|
+
@context.pop
|
1125
1129
|
}
|
1126
1130
|
| kCLASS tLSHFT expr term
|
1127
1131
|
{
|
1128
|
-
result = @def_level
|
1129
|
-
@def_level = 0
|
1130
|
-
|
1131
1132
|
@static_env.extend_static
|
1132
1133
|
@lexer.push_cmdarg
|
1134
|
+
@context.push(:sclass)
|
1133
1135
|
}
|
1134
1136
|
bodystmt kEND
|
1135
1137
|
{
|
@@ -1138,8 +1140,7 @@ rule
|
|
1138
1140
|
|
1139
1141
|
@lexer.pop_cmdarg
|
1140
1142
|
@static_env.unextend
|
1141
|
-
|
1142
|
-
@def_level = val[4]
|
1143
|
+
@context.pop
|
1143
1144
|
}
|
1144
1145
|
| kMODULE cpath
|
1145
1146
|
{
|
@@ -1148,7 +1149,7 @@ rule
|
|
1148
1149
|
}
|
1149
1150
|
bodystmt kEND
|
1150
1151
|
{
|
1151
|
-
if
|
1152
|
+
if @context.indirectly_in_def?
|
1152
1153
|
diagnostic :error, :module_in_def, nil, val[0]
|
1153
1154
|
end
|
1154
1155
|
|
@@ -1160,9 +1161,9 @@ rule
|
|
1160
1161
|
}
|
1161
1162
|
| kDEF fname
|
1162
1163
|
{
|
1163
|
-
@def_level += 1
|
1164
1164
|
@static_env.extend_static
|
1165
1165
|
@lexer.push_cmdarg
|
1166
|
+
@context.push(:def)
|
1166
1167
|
}
|
1167
1168
|
f_arglist bodystmt kEND
|
1168
1169
|
{
|
@@ -1171,7 +1172,7 @@ rule
|
|
1171
1172
|
|
1172
1173
|
@lexer.pop_cmdarg
|
1173
1174
|
@static_env.unextend
|
1174
|
-
@
|
1175
|
+
@context.pop
|
1175
1176
|
}
|
1176
1177
|
| kDEF singleton dot_or_colon
|
1177
1178
|
{
|
@@ -1179,9 +1180,9 @@ rule
|
|
1179
1180
|
}
|
1180
1181
|
fname
|
1181
1182
|
{
|
1182
|
-
@def_level += 1
|
1183
1183
|
@static_env.extend_static
|
1184
1184
|
@lexer.push_cmdarg
|
1185
|
+
@context.push(:defs)
|
1185
1186
|
}
|
1186
1187
|
f_arglist bodystmt kEND
|
1187
1188
|
{
|
@@ -1190,7 +1191,7 @@ rule
|
|
1190
1191
|
|
1191
1192
|
@lexer.pop_cmdarg
|
1192
1193
|
@static_env.unextend
|
1193
|
-
@
|
1194
|
+
@context.pop
|
1194
1195
|
}
|
1195
1196
|
| kBREAK
|
1196
1197
|
{
|
@@ -1489,24 +1490,36 @@ opt_block_args_tail:
|
|
1489
1490
|
result = @builder.args(nil, val[0], nil)
|
1490
1491
|
}
|
1491
1492
|
|
1492
|
-
lambda_body: tLAMBEG
|
1493
|
+
lambda_body: tLAMBEG
|
1494
|
+
{
|
1495
|
+
@context.push(:lambda)
|
1496
|
+
}
|
1497
|
+
compstmt tRCURLY
|
1493
1498
|
{
|
1494
|
-
result = [ val[0], val[
|
1499
|
+
result = [ val[0], val[2], val[3] ]
|
1500
|
+
@context.pop
|
1495
1501
|
}
|
1496
|
-
| kDO_LAMBDA
|
1502
|
+
| kDO_LAMBDA
|
1497
1503
|
{
|
1498
|
-
|
1504
|
+
@context.push(:lambda)
|
1505
|
+
}
|
1506
|
+
compstmt kEND
|
1507
|
+
{
|
1508
|
+
result = [ val[0], val[2], val[3] ]
|
1509
|
+
@context.pop
|
1499
1510
|
}
|
1500
1511
|
|
1501
1512
|
do_block: kDO_BLOCK
|
1502
1513
|
{
|
1503
1514
|
@static_env.extend_dynamic
|
1515
|
+
@context.push(:block)
|
1504
1516
|
}
|
1505
1517
|
opt_block_param compstmt kEND
|
1506
1518
|
{
|
1507
1519
|
result = [ val[0], val[2], val[3], val[4] ]
|
1508
1520
|
|
1509
1521
|
@static_env.unextend
|
1522
|
+
@context.pop
|
1510
1523
|
}
|
1511
1524
|
|
1512
1525
|
block_call: command do_block
|
@@ -1593,22 +1606,26 @@ opt_block_args_tail:
|
|
1593
1606
|
brace_block: tLCURLY
|
1594
1607
|
{
|
1595
1608
|
@static_env.extend_dynamic
|
1609
|
+
@context.push(:block)
|
1596
1610
|
}
|
1597
1611
|
opt_block_param compstmt tRCURLY
|
1598
1612
|
{
|
1599
1613
|
result = [ val[0], val[2], val[3], val[4] ]
|
1600
1614
|
|
1601
1615
|
@static_env.unextend
|
1616
|
+
@context.pop
|
1602
1617
|
}
|
1603
1618
|
| kDO
|
1604
1619
|
{
|
1605
1620
|
@static_env.extend_dynamic
|
1621
|
+
@context.push(:block)
|
1606
1622
|
}
|
1607
1623
|
opt_block_param compstmt kEND
|
1608
1624
|
{
|
1609
1625
|
result = [ val[0], val[2], val[3], val[4] ]
|
1610
1626
|
|
1611
1627
|
@static_env.unextend
|
1628
|
+
@context.pop
|
1612
1629
|
}
|
1613
1630
|
|
1614
1631
|
case_body: kWHEN args then compstmt cases
|
@@ -2342,8 +2359,6 @@ end
|
|
2342
2359
|
|
2343
2360
|
require 'parser'
|
2344
2361
|
|
2345
|
-
Parser.check_for_encoding_support
|
2346
|
-
|
2347
2362
|
---- inner
|
2348
2363
|
|
2349
2364
|
def version
|
data/lib/parser/ruby24.y
CHANGED
@@ -283,9 +283,14 @@ rule
|
|
283
283
|
nil, val[3], nil)
|
284
284
|
}
|
285
285
|
|
286
|
-
cmd_brace_block: tLBRACE_ARG
|
286
|
+
cmd_brace_block: tLBRACE_ARG
|
287
287
|
{
|
288
|
-
|
288
|
+
@context.push(:block)
|
289
|
+
}
|
290
|
+
brace_body tRCURLY
|
291
|
+
{
|
292
|
+
result = [ val[0], *val[2], val[3] ]
|
293
|
+
@context.pop
|
289
294
|
}
|
290
295
|
|
291
296
|
fcall: operation
|
@@ -845,12 +850,11 @@ rule
|
|
845
850
|
}
|
846
851
|
|
847
852
|
command_args: {
|
848
|
-
result = @lexer.cmdarg.dup
|
849
853
|
@lexer.cmdarg.push(true)
|
850
854
|
}
|
851
855
|
call_args
|
852
856
|
{
|
853
|
-
@lexer.cmdarg
|
857
|
+
@lexer.cmdarg.pop
|
854
858
|
|
855
859
|
result = val[1]
|
856
860
|
}
|
@@ -1099,10 +1103,11 @@ rule
|
|
1099
1103
|
{
|
1100
1104
|
@static_env.extend_static
|
1101
1105
|
@lexer.push_cmdarg
|
1106
|
+
@context.push(:class)
|
1102
1107
|
}
|
1103
1108
|
bodystmt kEND
|
1104
1109
|
{
|
1105
|
-
if
|
1110
|
+
if @context.indirectly_in_def?
|
1106
1111
|
diagnostic :error, :class_in_def, nil, val[0]
|
1107
1112
|
end
|
1108
1113
|
|
@@ -1113,14 +1118,13 @@ rule
|
|
1113
1118
|
|
1114
1119
|
@lexer.pop_cmdarg
|
1115
1120
|
@static_env.unextend
|
1121
|
+
@context.pop
|
1116
1122
|
}
|
1117
1123
|
| kCLASS tLSHFT expr term
|
1118
1124
|
{
|
1119
|
-
result = @def_level
|
1120
|
-
@def_level = 0
|
1121
|
-
|
1122
1125
|
@static_env.extend_static
|
1123
1126
|
@lexer.push_cmdarg
|
1127
|
+
@context.push(:sclass)
|
1124
1128
|
}
|
1125
1129
|
bodystmt kEND
|
1126
1130
|
{
|
@@ -1129,8 +1133,7 @@ rule
|
|
1129
1133
|
|
1130
1134
|
@lexer.pop_cmdarg
|
1131
1135
|
@static_env.unextend
|
1132
|
-
|
1133
|
-
@def_level = val[4]
|
1136
|
+
@context.pop
|
1134
1137
|
}
|
1135
1138
|
| kMODULE cpath
|
1136
1139
|
{
|
@@ -1139,7 +1142,7 @@ rule
|
|
1139
1142
|
}
|
1140
1143
|
bodystmt kEND
|
1141
1144
|
{
|
1142
|
-
if
|
1145
|
+
if @context.indirectly_in_def?
|
1143
1146
|
diagnostic :error, :module_in_def, nil, val[0]
|
1144
1147
|
end
|
1145
1148
|
|
@@ -1151,9 +1154,9 @@ rule
|
|
1151
1154
|
}
|
1152
1155
|
| kDEF fname
|
1153
1156
|
{
|
1154
|
-
@def_level += 1
|
1155
1157
|
@static_env.extend_static
|
1156
1158
|
@lexer.push_cmdarg
|
1159
|
+
@context.push(:def)
|
1157
1160
|
}
|
1158
1161
|
f_arglist bodystmt kEND
|
1159
1162
|
{
|
@@ -1162,7 +1165,7 @@ rule
|
|
1162
1165
|
|
1163
1166
|
@lexer.pop_cmdarg
|
1164
1167
|
@static_env.unextend
|
1165
|
-
@
|
1168
|
+
@context.pop
|
1166
1169
|
}
|
1167
1170
|
| kDEF singleton dot_or_colon
|
1168
1171
|
{
|
@@ -1170,9 +1173,9 @@ rule
|
|
1170
1173
|
}
|
1171
1174
|
fname
|
1172
1175
|
{
|
1173
|
-
@def_level += 1
|
1174
1176
|
@static_env.extend_static
|
1175
1177
|
@lexer.push_cmdarg
|
1178
|
+
@context.push(:defs)
|
1176
1179
|
}
|
1177
1180
|
f_arglist bodystmt kEND
|
1178
1181
|
{
|
@@ -1181,7 +1184,7 @@ rule
|
|
1181
1184
|
|
1182
1185
|
@lexer.pop_cmdarg
|
1183
1186
|
@static_env.unextend
|
1184
|
-
@
|
1187
|
+
@context.pop
|
1185
1188
|
}
|
1186
1189
|
| kBREAK
|
1187
1190
|
{
|
@@ -1458,13 +1461,11 @@ opt_block_args_tail:
|
|
1458
1461
|
}
|
1459
1462
|
f_larglist
|
1460
1463
|
{
|
1461
|
-
|
1462
|
-
@lexer.cmdarg.clear
|
1464
|
+
@lexer.cmdarg.push(false)
|
1463
1465
|
}
|
1464
1466
|
lambda_body
|
1465
1467
|
{
|
1466
|
-
@lexer.cmdarg
|
1467
|
-
@lexer.cmdarg.lexpop
|
1468
|
+
@lexer.cmdarg.pop
|
1468
1469
|
|
1469
1470
|
result = [ val[1], val[3] ]
|
1470
1471
|
|
@@ -1480,18 +1481,33 @@ opt_block_args_tail:
|
|
1480
1481
|
result = @builder.args(nil, val[0], nil)
|
1481
1482
|
}
|
1482
1483
|
|
1483
|
-
lambda_body: tLAMBEG
|
1484
|
+
lambda_body: tLAMBEG
|
1485
|
+
{
|
1486
|
+
@context.push(:lambda)
|
1487
|
+
}
|
1488
|
+
compstmt tRCURLY
|
1489
|
+
{
|
1490
|
+
result = [ val[0], val[2], val[3] ]
|
1491
|
+
@context.pop
|
1492
|
+
}
|
1493
|
+
| kDO_LAMBDA
|
1484
1494
|
{
|
1485
|
-
|
1495
|
+
@context.push(:lambda)
|
1486
1496
|
}
|
1487
|
-
|
1497
|
+
compstmt kEND
|
1488
1498
|
{
|
1489
|
-
result = [ val[0], val[
|
1499
|
+
result = [ val[0], val[2], val[3] ]
|
1500
|
+
@context.pop
|
1490
1501
|
}
|
1491
1502
|
|
1492
|
-
do_block: kDO_BLOCK
|
1503
|
+
do_block: kDO_BLOCK
|
1493
1504
|
{
|
1494
|
-
|
1505
|
+
@context.push(:block)
|
1506
|
+
}
|
1507
|
+
do_body kEND
|
1508
|
+
{
|
1509
|
+
result = [ val[0], *val[2], val[3] ]
|
1510
|
+
@context.pop
|
1495
1511
|
}
|
1496
1512
|
|
1497
1513
|
block_call: command do_block
|
@@ -1575,29 +1591,33 @@ opt_block_args_tail:
|
|
1575
1591
|
result = @builder.index(val[0], val[1], val[2], val[3])
|
1576
1592
|
}
|
1577
1593
|
|
1578
|
-
brace_block: tLCURLY
|
1594
|
+
brace_block: tLCURLY
|
1595
|
+
{
|
1596
|
+
@context.push(:block)
|
1597
|
+
}
|
1598
|
+
brace_body tRCURLY
|
1579
1599
|
{
|
1580
|
-
result = [ val[0], *val[
|
1600
|
+
result = [ val[0], *val[2], val[3] ]
|
1601
|
+
@context.pop
|
1581
1602
|
}
|
1582
|
-
| kDO
|
1603
|
+
| kDO
|
1583
1604
|
{
|
1584
|
-
|
1605
|
+
@context.push(:block)
|
1606
|
+
}
|
1607
|
+
do_body kEND
|
1608
|
+
{
|
1609
|
+
result = [ val[0], *val[2], val[3] ]
|
1610
|
+
@context.pop
|
1585
1611
|
}
|
1586
1612
|
|
1587
1613
|
brace_body: {
|
1588
1614
|
@static_env.extend_dynamic
|
1589
1615
|
}
|
1590
|
-
{
|
1591
|
-
result = @lexer.cmdarg.dup
|
1592
|
-
@lexer.cmdarg.clear
|
1593
|
-
}
|
1594
1616
|
opt_block_param compstmt
|
1595
1617
|
{
|
1596
|
-
result = [ val[
|
1618
|
+
result = [ val[1], val[2] ]
|
1597
1619
|
|
1598
1620
|
@static_env.unextend
|
1599
|
-
@lexer.cmdarg = val[1]
|
1600
|
-
@lexer.cmdarg.pop
|
1601
1621
|
}
|
1602
1622
|
|
1603
1623
|
do_body: {
|
@@ -1613,7 +1633,6 @@ opt_block_args_tail:
|
|
1613
1633
|
|
1614
1634
|
@static_env.unextend
|
1615
1635
|
@lexer.cmdarg = val[1]
|
1616
|
-
@lexer.cmdarg.pop
|
1617
1636
|
}
|
1618
1637
|
|
1619
1638
|
case_body: kWHEN args then compstmt cases
|
@@ -1818,7 +1837,7 @@ regexp_contents: # nothing
|
|
1818
1837
|
compstmt tSTRING_DEND
|
1819
1838
|
{
|
1820
1839
|
@lexer.cond.lexpop
|
1821
|
-
@lexer.cmdarg.
|
1840
|
+
@lexer.cmdarg.pop
|
1822
1841
|
|
1823
1842
|
result = @builder.begin(val[0], val[2], val[3])
|
1824
1843
|
}
|
@@ -1840,13 +1859,13 @@ regexp_contents: # nothing
|
|
1840
1859
|
|
1841
1860
|
symbol: tSYMBOL
|
1842
1861
|
{
|
1843
|
-
@lexer.state = :
|
1862
|
+
@lexer.state = :expr_end
|
1844
1863
|
result = @builder.symbol(val[0])
|
1845
1864
|
}
|
1846
1865
|
|
1847
1866
|
dsym: tSYMBEG xstring_contents tSTRING_END
|
1848
1867
|
{
|
1849
|
-
@lexer.state = :
|
1868
|
+
@lexer.state = :expr_end
|
1850
1869
|
result = @builder.symbol_compose(val[0], val[1], val[2])
|
1851
1870
|
}
|
1852
1871
|
|
@@ -1866,22 +1885,22 @@ regexp_contents: # nothing
|
|
1866
1885
|
|
1867
1886
|
simple_numeric: tINTEGER
|
1868
1887
|
{
|
1869
|
-
@lexer.state = :
|
1888
|
+
@lexer.state = :expr_end
|
1870
1889
|
result = @builder.integer(val[0])
|
1871
1890
|
}
|
1872
1891
|
| tFLOAT
|
1873
1892
|
{
|
1874
|
-
@lexer.state = :
|
1893
|
+
@lexer.state = :expr_end
|
1875
1894
|
result = @builder.float(val[0])
|
1876
1895
|
}
|
1877
1896
|
| tRATIONAL
|
1878
1897
|
{
|
1879
|
-
@lexer.state = :
|
1898
|
+
@lexer.state = :expr_end
|
1880
1899
|
result = @builder.rational(val[0])
|
1881
1900
|
}
|
1882
1901
|
| tIMAGINARY
|
1883
1902
|
{
|
1884
|
-
@lexer.state = :
|
1903
|
+
@lexer.state = :expr_end
|
1885
1904
|
result = @builder.complex(val[0])
|
1886
1905
|
}
|
1887
1906
|
|
@@ -2353,8 +2372,6 @@ end
|
|
2353
2372
|
|
2354
2373
|
require 'parser'
|
2355
2374
|
|
2356
|
-
Parser.check_for_encoding_support
|
2357
|
-
|
2358
2375
|
---- inner
|
2359
2376
|
|
2360
2377
|
def version
|