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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41b49f3089bda3758931dcacdbfacfe188099d40
|
4
|
+
data.tar.gz: 16bdfbd9b6b350aadee20337abdc30145df20b01
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54e6bf7dd57d961e29c7378f9779cc0b62d2f3e9f3d8c940605b78306fa6a27bc4bd37d49da2e96e1ca15c324b0d51fc03f861d12ffe8e919b491d9a5e2fcdac
|
7
|
+
data.tar.gz: 31a135b14a05303a46d8f5f227900139bf255ce297f1c1b23fcef382edd2362e77468aa5562588d516a9e8098be0be1bbfd43716e957b6b19e24bcaaf7def85c
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/.autotest
CHANGED
@@ -15,6 +15,11 @@ Autotest.add_hook :initialize do |at|
|
|
15
15
|
at.add_exception "lib/ruby18_parser.rb"
|
16
16
|
at.add_exception "lib/ruby19_parser.rb"
|
17
17
|
at.add_exception "lib/ruby20_parser.rb"
|
18
|
+
at.add_exception "lib/ruby21_parser.rb"
|
19
|
+
at.add_exception "lib/ruby22_parser.rb"
|
20
|
+
at.add_exception "lib/ruby20_parser.y"
|
21
|
+
at.add_exception "lib/ruby21_parser.y"
|
22
|
+
at.add_exception "lib/ruby22_parser.y"
|
18
23
|
at.add_exception "lib/ruby_lexer.rex.rb"
|
19
24
|
|
20
25
|
Dir["gauntlet*"].each do |f|
|
@@ -25,7 +30,12 @@ Autotest.add_hook :initialize do |at|
|
|
25
30
|
at.testlib = "minitest/autorun"
|
26
31
|
|
27
32
|
at.add_mapping(/^lib\/.*\.y$/) do |f, _|
|
28
|
-
g = File.basename(f, ".y").gsub("_", "_?").gsub(/1[89]|2[
|
33
|
+
g = File.basename(f, ".y").gsub("_", "_?").gsub(/1[89]|2[012]/, '')
|
34
|
+
at.files_matching %r%^test/.*#{g}.rb$%
|
35
|
+
end
|
36
|
+
|
37
|
+
at.add_mapping(/^lib\/.*\.yy$/) do |f, _|
|
38
|
+
g = File.basename(f, ".yy").gsub("_", "_?").gsub(/1[89]|2[012]/, '')
|
29
39
|
at.files_matching %r%^test/.*#{g}.rb$%
|
30
40
|
end
|
31
41
|
|
@@ -46,7 +56,7 @@ Autotest.add_hook :initialize do |at|
|
|
46
56
|
at.extra_class_map[klass] = "test/test_ruby_parser_extras.rb"
|
47
57
|
end
|
48
58
|
|
49
|
-
%w(TestRuby18Parser TestRuby19Parser TestRuby20Parser TestRuby21Parser TestParseTree).each do |klass| # HACK
|
59
|
+
%w(TestRuby18Parser TestRuby19Parser TestRuby20Parser TestRuby21Parser TestRuby22Parser TestParseTree).each do |klass| # HACK
|
50
60
|
at.extra_class_map[klass] = "test/test_ruby_parser.rb"
|
51
61
|
end
|
52
62
|
end
|
data/History.txt
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
=== 3.7.0 / 2015-05-28
|
2
|
+
|
3
|
+
* 2 major enhancements:
|
4
|
+
|
5
|
+
* Added preliminary support for ruby 2.2 syntax.
|
6
|
+
* Now writing all 2.x parsers from one source, generating racc files.
|
7
|
+
|
8
|
+
* 1 minor enhancement:
|
9
|
+
|
10
|
+
* Added RubyLexer#process_label and hooked it up to "x": and 'x': productions.
|
11
|
+
|
12
|
+
* 4 bug fixes:
|
13
|
+
|
14
|
+
* Fixed handling of block_args to be consistent across all parse versions.
|
15
|
+
* Fixed lexing of label assoc args w/ newlines in between k/v. (jeremyf)
|
16
|
+
* Fixed lexing of x?'':y for ruby22 (not a label). (presidentbeef)
|
17
|
+
* clear and restore cmdarg stack around def args and body.
|
18
|
+
|
1
19
|
=== 3.6.6 / 2015-04-13
|
2
20
|
|
3
21
|
* 1 minor enhancement:
|
data/Manifest.txt
CHANGED
@@ -14,10 +14,13 @@ lib/ruby20_parser.rb
|
|
14
14
|
lib/ruby20_parser.y
|
15
15
|
lib/ruby21_parser.rb
|
16
16
|
lib/ruby21_parser.y
|
17
|
+
lib/ruby22_parser.rb
|
18
|
+
lib/ruby22_parser.y
|
17
19
|
lib/ruby_lexer.rb
|
18
20
|
lib/ruby_lexer.rex
|
19
21
|
lib/ruby_lexer.rex.rb
|
20
22
|
lib/ruby_parser.rb
|
23
|
+
lib/ruby_parser.yy
|
21
24
|
lib/ruby_parser_extras.rb
|
22
25
|
test/test_ruby_lexer.rb
|
23
26
|
test/test_ruby_parser.rb
|
data/Rakefile
CHANGED
@@ -22,21 +22,38 @@ Hoe.spec "ruby_parser" do
|
|
22
22
|
dependency "rake", "< 11", :developer
|
23
23
|
dependency "oedipus_lex", "~> 2.1", :developer
|
24
24
|
|
25
|
-
if plugin? :perforce then
|
25
|
+
if plugin? :perforce then # generated files
|
26
26
|
self.perforce_ignore << "lib/ruby18_parser.rb"
|
27
27
|
self.perforce_ignore << "lib/ruby19_parser.rb"
|
28
28
|
self.perforce_ignore << "lib/ruby20_parser.rb"
|
29
|
+
self.perforce_ignore << "lib/ruby20_parser.y"
|
29
30
|
self.perforce_ignore << "lib/ruby21_parser.rb"
|
31
|
+
self.perforce_ignore << "lib/ruby21_parser.y"
|
32
|
+
self.perforce_ignore << "lib/ruby22_parser.rb"
|
33
|
+
self.perforce_ignore << "lib/ruby22_parser.y"
|
30
34
|
self.perforce_ignore << "lib/ruby_lexer.rex.rb"
|
31
35
|
end
|
32
36
|
|
33
37
|
self.racc_flags << " -t" if plugin?(:racc) && ENV["DEBUG"]
|
34
38
|
end
|
35
39
|
|
40
|
+
file "lib/ruby20_parser.y" => "lib/ruby_parser.yy" do |t|
|
41
|
+
sh "unifdef -tk -DRUBY20 -URUBY21 -URUBY22 -UDEAD #{t.source} > #{t.name} || true"
|
42
|
+
end
|
43
|
+
|
44
|
+
file "lib/ruby21_parser.y" => "lib/ruby_parser.yy" do |t|
|
45
|
+
sh "unifdef -tk -URUBY20 -DRUBY21 -URUBY22 -UDEAD #{t.source} > #{t.name} || true"
|
46
|
+
end
|
47
|
+
|
48
|
+
file "lib/ruby22_parser.y" => "lib/ruby_parser.yy" do |t|
|
49
|
+
sh "unifdef -tk -URUBY20 -URUBY21 -DRUBY22 -UDEAD #{t.source} > #{t.name} || true"
|
50
|
+
end
|
51
|
+
|
36
52
|
file "lib/ruby18_parser.rb" => "lib/ruby18_parser.y"
|
37
53
|
file "lib/ruby19_parser.rb" => "lib/ruby19_parser.y"
|
38
54
|
file "lib/ruby20_parser.rb" => "lib/ruby20_parser.y"
|
39
55
|
file "lib/ruby21_parser.rb" => "lib/ruby21_parser.y"
|
56
|
+
file "lib/ruby22_parser.rb" => "lib/ruby22_parser.y"
|
40
57
|
file "lib/ruby_lexer.rex.rb" => "lib/ruby_lexer.rex"
|
41
58
|
|
42
59
|
task :clean do
|
@@ -44,6 +61,7 @@ task :clean do
|
|
44
61
|
Dir["diff.diff"] + # not all diffs. bit me too many times
|
45
62
|
Dir["coverage.info"] +
|
46
63
|
Dir["coverage"] +
|
64
|
+
Dir["lib/ruby2*_parser.y"] +
|
47
65
|
Dir["lib/*.output"])
|
48
66
|
end
|
49
67
|
|
@@ -75,18 +93,24 @@ task :isolate => :phony
|
|
75
93
|
# 4) run `bison -r all parse.tmp.y`
|
76
94
|
# 5) mv parse.tmp.output parseXX.output
|
77
95
|
|
78
|
-
|
96
|
+
# possibly new instructions:
|
97
|
+
#
|
98
|
+
# 1) check out the XX version of ruby
|
99
|
+
# 2) YFLAGS="-r all" make parse.c
|
100
|
+
# 3) mv y.output parseXX.output
|
101
|
+
|
102
|
+
%w[18 19 20 21 22].each do |v|
|
79
103
|
task "compare#{v}" do
|
80
104
|
sh "./yack.rb lib/ruby#{v}_parser.output > racc#{v}.txt"
|
81
105
|
sh "./yack.rb parse#{v}.output > yacc#{v}.txt"
|
82
|
-
sh "diff -du
|
106
|
+
sh "diff -du racc#{v}.txt yacc#{v}.txt || true"
|
83
107
|
puts
|
84
|
-
sh "diff -du
|
108
|
+
sh "diff -du racc#{v}.txt yacc#{v}.txt | wc -l"
|
85
109
|
end
|
86
110
|
end
|
87
111
|
|
88
112
|
task :debug => :isolate do
|
89
|
-
ENV["V"] ||= "
|
113
|
+
ENV["V"] ||= "22"
|
90
114
|
Rake.application[:parser].invoke # this way we can have DEBUG set
|
91
115
|
Rake.application[:lexer].invoke # this way we can have DEBUG set
|
92
116
|
|
@@ -103,13 +127,16 @@ task :debug => :isolate do
|
|
103
127
|
Ruby20Parser.new
|
104
128
|
when "21" then
|
105
129
|
Ruby21Parser.new
|
130
|
+
when "22" then
|
131
|
+
Ruby22Parser.new
|
106
132
|
else
|
107
133
|
raise "Unsupported version #{ENV["V"]}"
|
108
134
|
end
|
109
135
|
|
110
136
|
time = (ENV["RP_TIMEOUT"] || 10).to_i
|
111
137
|
|
112
|
-
|
138
|
+
n = ENV["BUG"]
|
139
|
+
file = (n && "bug#{n}.rb") || ENV["F"] || ENV["FILE"]
|
113
140
|
|
114
141
|
ruby = if file then
|
115
142
|
File.read(file)
|
data/lib/ruby18_parser.rb
CHANGED
@@ -2428,7 +2428,7 @@ racc_reduce_table = [
|
|
2428
2428
|
2, 240, :_reduce_352,
|
2429
2429
|
1, 240, :_reduce_353,
|
2430
2430
|
2, 240, :_reduce_354,
|
2431
|
-
1, 168, :
|
2431
|
+
1, 168, :_reduce_355,
|
2432
2432
|
2, 168, :_reduce_356,
|
2433
2433
|
1, 168, :_reduce_357,
|
2434
2434
|
3, 168, :_reduce_358,
|
@@ -3167,7 +3167,7 @@ def _reduce_22(val, _values, result)
|
|
3167
3167
|
if (in_def || in_single > 0) then
|
3168
3168
|
yyerror "END in method; use at_exit"
|
3169
3169
|
end
|
3170
|
-
result = new_iter s(:postexe),
|
3170
|
+
result = new_iter s(:postexe), 0, val[2]
|
3171
3171
|
|
3172
3172
|
result
|
3173
3173
|
end
|
@@ -4874,17 +4874,20 @@ def _reduce_354(val, _values, result)
|
|
4874
4874
|
result
|
4875
4875
|
end
|
4876
4876
|
|
4877
|
-
|
4877
|
+
def _reduce_355(val, _values, result)
|
4878
|
+
result = 0
|
4879
|
+
result
|
4880
|
+
end
|
4878
4881
|
|
4879
4882
|
def _reduce_356(val, _values, result)
|
4880
|
-
result =
|
4883
|
+
result = s(:args)
|
4881
4884
|
self.lexer.command_start = true
|
4882
4885
|
|
4883
4886
|
result
|
4884
4887
|
end
|
4885
4888
|
|
4886
4889
|
def _reduce_357(val, _values, result)
|
4887
|
-
result =
|
4890
|
+
result = s(:args)
|
4888
4891
|
self.lexer.command_start = true
|
4889
4892
|
|
4890
4893
|
result
|
data/lib/ruby18_parser.y
CHANGED
@@ -135,7 +135,7 @@ rule
|
|
135
135
|
if (in_def || in_single > 0) then
|
136
136
|
yyerror "END in method; use at_exit"
|
137
137
|
end
|
138
|
-
result = new_iter s(:postexe),
|
138
|
+
result = new_iter s(:postexe), 0, val[2]
|
139
139
|
}
|
140
140
|
| lhs tEQL command_call
|
141
141
|
{
|
@@ -1271,15 +1271,15 @@ rule
|
|
1271
1271
|
}
|
1272
1272
|
;
|
1273
1273
|
|
1274
|
-
opt_block_var: none
|
1274
|
+
opt_block_var: none { result = 0 }
|
1275
1275
|
| tPIPE tPIPE
|
1276
1276
|
{
|
1277
|
-
result =
|
1277
|
+
result = s(:args)
|
1278
1278
|
self.lexer.command_start = true
|
1279
1279
|
}
|
1280
1280
|
| tOROP
|
1281
1281
|
{
|
1282
|
-
result =
|
1282
|
+
result = s(:args)
|
1283
1283
|
self.lexer.command_start = true
|
1284
1284
|
}
|
1285
1285
|
| tPIPE block_var tPIPE
|
data/lib/ruby19_parser.rb
CHANGED
@@ -2466,7 +2466,7 @@ racc_reduce_table = [
|
|
2466
2466
|
2, 265, :_reduce_379,
|
2467
2467
|
4, 265, :_reduce_380,
|
2468
2468
|
1, 265, :_reduce_381,
|
2469
|
-
1, 178, :
|
2469
|
+
1, 178, :_reduce_382,
|
2470
2470
|
1, 178, :_reduce_none,
|
2471
2471
|
3, 271, :_reduce_384,
|
2472
2472
|
1, 271, :_reduce_385,
|
@@ -3297,7 +3297,7 @@ def _reduce_28(val, _values, result)
|
|
3297
3297
|
if (self.in_def || self.in_single > 0) then
|
3298
3298
|
yyerror "END in method; use at_exit"
|
3299
3299
|
end
|
3300
|
-
result = new_iter s(:postexe),
|
3300
|
+
result = new_iter s(:postexe), 0, val[2]
|
3301
3301
|
|
3302
3302
|
result
|
3303
3303
|
end
|
@@ -4759,20 +4759,22 @@ def _reduce_321(val, _values, result)
|
|
4759
4759
|
end
|
4760
4760
|
|
4761
4761
|
def _reduce_322(val, _values, result)
|
4762
|
-
result = self.in_def
|
4762
|
+
result = [self.in_def, self.lexer.cmdarg.stack.dup]
|
4763
4763
|
|
4764
4764
|
self.comments.push self.lexer.comments
|
4765
4765
|
self.in_def = true
|
4766
4766
|
self.env.extend
|
4767
|
+
lexer.cmdarg.stack.replace [false]
|
4767
4768
|
|
4768
4769
|
result
|
4769
4770
|
end
|
4770
4771
|
|
4771
4772
|
def _reduce_323(val, _values, result)
|
4772
|
-
in_def = val[2]
|
4773
|
+
in_def, cmdarg = val[2]
|
4773
4774
|
|
4774
4775
|
result = new_defn val
|
4775
4776
|
|
4777
|
+
lexer.cmdarg.stack.replace cmdarg
|
4776
4778
|
self.env.unextend
|
4777
4779
|
self.in_def = in_def
|
4778
4780
|
self.lexer.comments # we don't care about comments in the body
|
@@ -5073,19 +5075,21 @@ def _reduce_381(val, _values, result)
|
|
5073
5075
|
result
|
5074
5076
|
end
|
5075
5077
|
|
5076
|
-
|
5078
|
+
def _reduce_382(val, _values, result)
|
5079
|
+
result = 0
|
5080
|
+
result
|
5081
|
+
end
|
5077
5082
|
|
5078
5083
|
# reduce 383 omitted
|
5079
5084
|
|
5080
5085
|
def _reduce_384(val, _values, result)
|
5081
5086
|
result = args val
|
5082
|
-
result = 0 if result == s(:args)
|
5083
5087
|
|
5084
5088
|
result
|
5085
5089
|
end
|
5086
5090
|
|
5087
5091
|
def _reduce_385(val, _values, result)
|
5088
|
-
result =
|
5092
|
+
result = s(:args)
|
5089
5093
|
self.lexer.command_start = true
|
5090
5094
|
|
5091
5095
|
result
|
@@ -5138,8 +5142,6 @@ def _reduce_394(val, _values, result)
|
|
5138
5142
|
lpar, args, body = val
|
5139
5143
|
lexer.lpar_beg = lpar
|
5140
5144
|
|
5141
|
-
args = 0 if args == s(:args)
|
5142
|
-
|
5143
5145
|
call = new_call nil, :lambda
|
5144
5146
|
result = new_iter call, args, body
|
5145
5147
|
|
@@ -5154,6 +5156,7 @@ end
|
|
5154
5156
|
|
5155
5157
|
def _reduce_396(val, _values, result)
|
5156
5158
|
result = val[0]
|
5159
|
+
result = 0 if result == s(:args)
|
5157
5160
|
|
5158
5161
|
result
|
5159
5162
|
end
|
data/lib/ruby19_parser.y
CHANGED
@@ -152,7 +152,7 @@ rule
|
|
152
152
|
if (self.in_def || self.in_single > 0) then
|
153
153
|
yyerror "END in method; use at_exit"
|
154
154
|
end
|
155
|
-
result = new_iter s(:postexe),
|
155
|
+
result = new_iter s(:postexe), 0, val[2]
|
156
156
|
}
|
157
157
|
| command_asgn
|
158
158
|
| mlhs tEQL command_call
|
@@ -1104,18 +1104,20 @@ rule
|
|
1104
1104
|
}
|
1105
1105
|
| kDEF fname
|
1106
1106
|
{
|
1107
|
-
result = self.in_def
|
1107
|
+
result = [self.in_def, self.lexer.cmdarg.stack.dup]
|
1108
1108
|
|
1109
1109
|
self.comments.push self.lexer.comments
|
1110
1110
|
self.in_def = true
|
1111
1111
|
self.env.extend
|
1112
|
+
lexer.cmdarg.stack.replace [false]
|
1112
1113
|
}
|
1113
1114
|
f_arglist bodystmt kEND
|
1114
1115
|
{
|
1115
|
-
in_def = val[2]
|
1116
|
+
in_def, cmdarg = val[2]
|
1116
1117
|
|
1117
1118
|
result = new_defn val
|
1118
1119
|
|
1120
|
+
lexer.cmdarg.stack.replace cmdarg
|
1119
1121
|
self.env.unextend
|
1120
1122
|
self.in_def = in_def
|
1121
1123
|
self.lexer.comments # we don't care about comments in the body
|
@@ -1330,17 +1332,16 @@ rule
|
|
1330
1332
|
result = args val
|
1331
1333
|
}
|
1332
1334
|
|
1333
|
-
opt_block_param: none
|
1335
|
+
opt_block_param: none { result = 0 }
|
1334
1336
|
| block_param_def
|
1335
1337
|
|
1336
1338
|
block_param_def: tPIPE opt_bv_decl tPIPE
|
1337
1339
|
{
|
1338
1340
|
result = args val
|
1339
|
-
result = 0 if result == s(:args)
|
1340
1341
|
}
|
1341
1342
|
| tOROP
|
1342
1343
|
{
|
1343
|
-
result =
|
1344
|
+
result = s(:args)
|
1344
1345
|
self.lexer.command_start = true
|
1345
1346
|
}
|
1346
1347
|
| tPIPE block_param opt_bv_decl tPIPE
|
@@ -1380,8 +1381,6 @@ rule
|
|
1380
1381
|
lpar, args, body = val
|
1381
1382
|
lexer.lpar_beg = lpar
|
1382
1383
|
|
1383
|
-
args = 0 if args == s(:args)
|
1384
|
-
|
1385
1384
|
call = new_call nil, :lambda
|
1386
1385
|
result = new_iter call, args, body
|
1387
1386
|
}
|
@@ -1393,6 +1392,7 @@ rule
|
|
1393
1392
|
| f_args
|
1394
1393
|
{
|
1395
1394
|
result = val[0]
|
1395
|
+
result = 0 if result == s(:args)
|
1396
1396
|
}
|
1397
1397
|
|
1398
1398
|
lambda_body: tLAMBEG compstmt tRCURLY
|
data/lib/ruby20_parser.rb
CHANGED
@@ -74,52 +74,52 @@ clist = [
|
|
74
74
|
'173,199,203,204,183,172,186,190,192,184,177,574,573,705,193,200,195',
|
75
75
|
'194,187,197,182,170,189,188,116,117,118,119,120,169,176,167,168,164',
|
76
76
|
'165,166,124,126,123,687,125,704,952,239,557,556,555,899,558,158,159',
|
77
|
-
'701,154,136,137,138,145,142,144,253,254,139,140,-265,903,905,161
|
77
|
+
'701,154,136,137,138,145,142,144,253,254,139,140,-265,903,905,160,161',
|
78
78
|
'146,147,717,906,557,556,555,236,558,242,219,238,237,234,235,151,150',
|
79
|
-
'704,135,157,153,152,148,149,143,141,133,156,134,909,911,
|
79
|
+
'704,135,157,153,152,148,149,143,141,133,156,134,909,911,162,91,913,1004',
|
80
80
|
'915,915,-514,219,219,713,1005,92,717,-514,557,556,555,921,558,1003,155',
|
81
|
-
'694,-514,923,693,
|
81
|
+
'694,-514,923,693,163,174,185,175,198,171,191,181,180,201,202,196,179',
|
82
82
|
'178,173,199,203,204,183,172,186,190,192,184,177,713,925,687,193,200',
|
83
83
|
'195,194,187,197,182,170,189,188,116,117,118,119,120,169,176,167,168',
|
84
84
|
'164,165,166,124,126,532,219,125,867,868,239,676,869,107,108,-85,158',
|
85
|
-
'159,219,154,136,137,138,145,142,144,253,254,139,140,219,219,219,
|
86
|
-
'
|
87
|
-
'150,935,135,157,153,152,148,149,143,141,133,156,134,936,219,
|
85
|
+
'159,219,154,136,137,138,145,142,144,253,254,139,140,219,219,219,160',
|
86
|
+
'161,146,147,717,239,557,556,555,236,558,242,239,238,237,234,235,151',
|
87
|
+
'150,935,135,157,153,152,148,149,143,141,133,156,134,936,219,162,91,939',
|
88
88
|
'743,-268,239,211,239,646,713,742,92,717,212,557,556,555,270,558,744',
|
89
|
-
'155,635,210,634,219,
|
89
|
+
'155,635,210,634,219,163,174,185,175,198,171,191,181,180,201,202,196',
|
90
90
|
'179,178,173,199,203,204,183,172,186,190,192,184,177,713,630,949,193',
|
91
91
|
'200,195,194,187,197,182,170,189,188,116,117,118,119,120,169,176,167',
|
92
92
|
'168,164,165,166,124,126,396,395,125,-265,397,628,-290,621,956,957,618',
|
93
93
|
'158,159,-290,154,136,137,138,145,142,144,959,-290,139,140,-289,-289',
|
94
|
-
'743,161,
|
94
|
+
'743,160,161,146,147,-289,-289,955,960,615,-595,-595,611,589,-289,-289',
|
95
95
|
'744,588,151,150,399,135,157,153,152,148,149,143,141,133,156,134,743',
|
96
|
-
'-336,
|
97
|
-
'-336,536,585,-281,-290,155,978,979,239,528,
|
96
|
+
'-336,162,586,-281,-290,584,955,-336,502,587,-281,-290,543,542,976,744',
|
97
|
+
'-336,536,585,-281,-290,155,978,979,239,528,163,174,185,175,198,171,191',
|
98
98
|
'181,180,201,202,196,179,178,173,199,203,204,183,172,186,190,192,184',
|
99
99
|
'177,983,527,523,193,200,195,194,187,197,182,170,189,188,116,117,118',
|
100
100
|
'119,120,169,176,167,168,164,165,166,124,126,704,988,125,990,992,994',
|
101
101
|
'517,994,270,219,273,158,159,518,154,136,137,138,145,142,144,1001,516',
|
102
|
-
'139,140,-289,529,519,161,
|
102
|
+
'139,140,-289,529,519,160,161,146,147,-289,530,512,511,219,-595,1006',
|
103
103
|
'-70,1007,-289,452,915,915,151,150,915,135,157,153,152,148,149,143,141',
|
104
|
-
'133,156,134,1012,502,
|
105
|
-
'389,-595,-594,693,386,383,380,356,155,219,316,976,315,
|
104
|
+
'133,156,134,1012,502,162,976,500,497,270,487,218,456,455,453,410,405',
|
105
|
+
'389,-595,-594,693,386,383,380,356,155,219,316,976,315,163,174,185,175',
|
106
106
|
'198,171,191,181,180,201,202,196,179,178,173,199,203,204,183,172,186',
|
107
107
|
'190,192,184,177,1035,1036,1037,193,200,195,194,187,197,182,170,189,188',
|
108
108
|
'1038,994,994,994,219,169,176,167,168,164,165,166,124,126,258,214,125',
|
109
109
|
'209,208,915,976,207,109,994,,158,159,,154,136,137,138,145,142,144,,',
|
110
|
-
'139,140,,,,161,
|
111
|
-
'149,143,141,133,156,134,,,
|
110
|
+
'139,140,,,,160,161,146,147,,,,,,,,,,,,,,151,150,,135,157,153,152,148',
|
111
|
+
'149,143,141,133,156,134,,,162,91,,,,,,,,,,92,,,,,,,,,155,,,,,163,174',
|
112
112
|
'185,175,198,171,191,181,180,201,202,196,179,178,173,199,203,204,183',
|
113
113
|
'172,186,190,192,184,177,,,,193,200,195,194,187,197,182,170,189,188,',
|
114
114
|
',,,,169,176,167,168,164,165,166,124,126,,,125,,,,,,,,,158,159,,154,136',
|
115
|
-
'137,138,145,142,144,,,139,140,,,,161,
|
116
|
-
',135,157,153,152,148,149,143,141,133,156,134,,,
|
117
|
-
',,,,,,155,,,,,
|
115
|
+
'137,138,145,142,144,,,139,140,,,,160,161,146,147,,,,,,,,,,,,,,151,150',
|
116
|
+
',135,157,153,152,148,149,143,141,133,156,134,,,162,91,,,,,,,,,,92,,',
|
117
|
+
',,,,,,155,,,,,163,174,185,175,198,171,191,181,180,201,202,196,179,178',
|
118
118
|
'173,199,203,204,183,172,186,190,192,184,177,,,,193,200,195,365,364,366',
|
119
119
|
'363,170,189,188,,,,,,169,176,167,168,360,361,362,358,126,97,96,359,',
|
120
|
-
'99,,,,,,,158,159,,154,136,137,138,145,142,144,,,139,140,,,,161,
|
120
|
+
'99,,,,,,,158,159,,154,136,137,138,145,142,144,,,139,140,,,,160,161,146',
|
121
121
|
'147,,,,,,372,,,,,,,,151,150,,135,157,153,152,148,149,143,141,133,156',
|
122
|
-
'134,,,
|
122
|
+
'134,,,162,,,,,,,,,,,,291,72,73,74,12,60,,,155,66,67,,,163,70,,68,69',
|
123
123
|
'71,33,34,75,76,,,,,,32,31,30,101,100,102,103,,,22,,,,,647,11,48,,13',
|
124
124
|
'105,104,106,95,59,97,96,98,,99,107,108,,93,94,,45,46,44,239,243,248',
|
125
125
|
'249,250,245,247,255,256,251,252,,232,233,,,253,254,,43,,,36,,,61,62',
|
@@ -818,49 +818,49 @@ clist = [
|
|
818
818
|
'-425,-425,-425,-425,-425,-425,-425,-425,-425,,,-425,-425,-425,,,-425',
|
819
819
|
',270,-425,,,-425,-425,,-425,,-425,,-425,,-425,-425,-425,-425,-425,-425',
|
820
820
|
'-425,,-425,-425,-425,,,,,,424,428,,,425,,,-425,-425,,-425,,-425,158',
|
821
|
-
'159,,154,136,137,138,145,142,144,,,139,140,,,,161,
|
822
|
-
',,,,,,,151,150,,135,157,153,152,148,149,143,141,133,156,134,,798,
|
823
|
-
'557,556,555,799,558,,,,,485,428,,,486,566,,,,,155,,,158,159,
|
824
|
-
'136,137,138,145,142,144,,,139,140,562,,,161,
|
825
|
-
'573,,,,,,,,151,150,,135,157,153,152,148,149,143,141,133,156,134,,,
|
826
|
-
',,,,,,,,567,736,435,,,737,,,,,,155,,,158,159,
|
827
|
-
'142,144,,,139,140,,,,161,
|
828
|
-
'153,152,148,149,143,141,133,156,134,,,
|
829
|
-
',,155,,,158,159,
|
821
|
+
'159,,154,136,137,138,145,142,144,,,139,140,,,,160,161,146,147,,,,,,270',
|
822
|
+
',,,,,,,151,150,,135,157,153,152,148,149,143,141,133,156,134,,798,162',
|
823
|
+
'557,556,555,799,558,,,,,485,428,,,486,566,,,,,155,,,158,159,163,154',
|
824
|
+
'136,137,138,145,142,144,,,139,140,562,,,160,161,146,147,,,571,570,574',
|
825
|
+
'573,,,,,,,,151,150,,135,157,153,152,148,149,143,141,133,156,134,,,162',
|
826
|
+
',,,,,,,,567,736,435,,,737,,,,,,155,,,158,159,163,154,136,137,138,145',
|
827
|
+
'142,144,,,139,140,,,,160,161,146,147,,,,,,270,,,,,,,,151,150,,135,157',
|
828
|
+
'153,152,148,149,143,141,133,156,134,,,162,,,,,,,,,,485,428,,,486,,,',
|
829
|
+
',,155,,,158,159,163,154,136,137,138,145,142,144,,,139,140,,,,160,161',
|
830
830
|
'146,147,,,,,,270,,,,,,,,151,150,,135,157,153,152,148,149,143,141,133',
|
831
|
-
'156,134,,,
|
832
|
-
'137,138,145,142,144,,,139,140,,,,161,
|
833
|
-
'150,,135,157,153,152,148,149,143,141,133,156,134,,,
|
834
|
-
'428,,,1029,,,,,,155,,,158,159,
|
835
|
-
'140,,,,161,
|
836
|
-
'149,143,141,133,156,134,,,
|
837
|
-
'159,
|
831
|
+
'156,134,,,162,,,,,,,,,,734,428,,,735,,,,,,155,,,158,159,163,154,136',
|
832
|
+
'137,138,145,142,144,,,139,140,,,,160,161,146,147,,,,,,270,,,,,,,,151',
|
833
|
+
'150,,135,157,153,152,148,149,143,141,133,156,134,,,162,,,,,,,,,,1028',
|
834
|
+
'428,,,1029,,,,,,155,,,158,159,163,154,136,137,138,145,142,144,,,139',
|
835
|
+
'140,,,,160,161,146,147,,,,,,270,,,,,,,,151,150,,135,157,153,152,148',
|
836
|
+
'149,143,141,133,156,134,,,162,,,,,,,,,,852,435,,,853,,,,,,155,,,158',
|
837
|
+
'159,163,154,136,137,138,145,142,144,,,139,140,,,,160,161,146,147,,,',
|
838
838
|
',,270,,,,,,,,151,150,,135,157,153,152,148,149,143,141,133,156,134,,',
|
839
|
-
'
|
840
|
-
'145,142,144,,,139,140,,,,161,
|
841
|
-
'157,153,152,148,149,143,141,133,156,134,,,
|
842
|
-
',,,,,155,,,158,159,
|
843
|
-
'
|
844
|
-
'133,156,134,,,
|
845
|
-
'136,137,138,145,142,144,,,139,140,,,,161,
|
846
|
-
',151,150,,135,157,153,152,148,149,143,141,133,156,134,,,
|
847
|
-
',649,428,,,650,,,,,,155,,,158,159,
|
848
|
-
'139,140,,,,161,
|
849
|
-
'148,149,143,141,133,156,134,,,
|
850
|
-
'158,159,
|
839
|
+
'162,,,,,,,,,,1030,435,,,1031,,,,,,155,,,158,159,163,154,136,137,138',
|
840
|
+
'145,142,144,,,139,140,,,,160,161,146,147,,,,,,270,,,,,,,,151,150,,135',
|
841
|
+
'157,153,152,148,149,143,141,133,156,134,,,162,,,,,,,,,,1000,435,,,999',
|
842
|
+
',,,,,155,,,158,159,163,154,136,137,138,145,142,144,,,139,140,,,,160',
|
843
|
+
'161,146,147,,,,,,270,,,,,,,,151,150,,135,157,153,152,148,149,143,141',
|
844
|
+
'133,156,134,,,162,,,,,,,,,,651,435,,,652,,,,,,155,,,158,159,163,154',
|
845
|
+
'136,137,138,145,142,144,,,139,140,,,,160,161,146,147,,,,,,270,,,,,,',
|
846
|
+
',151,150,,135,157,153,152,148,149,143,141,133,156,134,,,162,,,,,,,,',
|
847
|
+
',649,428,,,650,,,,,,155,,,158,159,163,154,136,137,138,145,142,144,,',
|
848
|
+
'139,140,,,,160,161,146,147,,,,,,270,,,,,,,,151,150,,135,157,153,152',
|
849
|
+
'148,149,143,141,133,156,134,,,162,,,,,,,,,,680,428,,,681,,,,,,155,,',
|
850
|
+
'158,159,163,154,136,137,138,145,142,144,,,139,140,,,,160,161,146,147',
|
851
851
|
',,,,,270,,,,,,,,151,150,,135,157,153,152,148,149,143,141,133,156,134',
|
852
|
-
',,
|
853
|
-
'145,142,144,,,139,140,,,,161,
|
854
|
-
'157,153,152,148,149,143,141,133,156,134,,,
|
855
|
-
',,,,,155,,,158,159,
|
856
|
-
'
|
857
|
-
'133,156,134,,,
|
858
|
-
'136,137,138,145,142,144,,,139,140,,,,161,
|
859
|
-
',151,150,,135,157,153,152,148,149,143,141,133,156,134,,,
|
860
|
-
',683,435,,,684,,,,,,155,,,158,159,
|
861
|
-
'139,140,,,,161,
|
862
|
-
'148,149,143,141,133,156,134,,560,
|
863
|
-
'555,564,558,,,566,,,,,155,,566,,798,
|
852
|
+
',,162,,,,,,,,,,649,428,,,650,,,,,,155,,,158,159,163,154,136,137,138',
|
853
|
+
'145,142,144,,,139,140,,,,160,161,146,147,,,,,,270,,,,,,,,151,150,,135',
|
854
|
+
'157,153,152,148,149,143,141,133,156,134,,,162,,,,,,,,,,431,435,,,430',
|
855
|
+
',,,,,155,,,158,159,163,154,136,137,138,145,142,144,,,139,140,,,,160',
|
856
|
+
'161,146,147,,,,,,270,,,,,,,,151,150,,135,157,153,152,148,149,143,141',
|
857
|
+
'133,156,134,,,162,,,,,,,,,,651,435,,,652,,,,,,155,,,158,159,163,154',
|
858
|
+
'136,137,138,145,142,144,,,139,140,,,,160,161,146,147,,,,,,270,,,,,,',
|
859
|
+
',151,150,,135,157,153,152,148,149,143,141,133,156,134,,,162,,,,,,,,',
|
860
|
+
',683,435,,,684,,,,,,155,,,158,159,163,154,136,137,138,145,142,144,,',
|
861
|
+
'139,140,,,,160,161,146,147,,,,,,270,,,,,,,,151,150,,135,157,153,152',
|
862
|
+
'148,149,143,141,133,156,134,,560,162,557,556,555,564,558,560,,557,556',
|
863
|
+
'555,564,558,,,566,,,,,155,,566,,798,163,557,556,555,799,558,,,,,,,562',
|
864
864
|
',,566,,,,562,752,571,570,574,573,,,,571,570,574,573,,,,,798,562,557',
|
865
865
|
'556,555,799,558,,,,571,570,574,573,,,566,,,,798,567,557,556,555,799',
|
866
866
|
'558,,567,,,,,,,,566,,562,560,,557,556,555,564,558,567,571,570,574,573',
|
@@ -2637,7 +2637,7 @@ racc_reduce_table = [
|
|
2637
2637
|
2, 279, :_reduce_390,
|
2638
2638
|
4, 279, :_reduce_391,
|
2639
2639
|
1, 279, :_reduce_392,
|
2640
|
-
1, 184, :
|
2640
|
+
1, 184, :_reduce_393,
|
2641
2641
|
1, 184, :_reduce_none,
|
2642
2642
|
3, 283, :_reduce_395,
|
2643
2643
|
1, 283, :_reduce_396,
|
@@ -3532,7 +3532,7 @@ def _reduce_28(val, _values, result)
|
|
3532
3532
|
debug20 3
|
3533
3533
|
yyerror "END in method; use at_exit"
|
3534
3534
|
end
|
3535
|
-
result = new_iter s(:postexe),
|
3535
|
+
result = new_iter s(:postexe), 0, val[2]
|
3536
3536
|
|
3537
3537
|
result
|
3538
3538
|
end
|
@@ -4381,6 +4381,7 @@ end
|
|
4381
4381
|
|
4382
4382
|
def _reduce_217(val, _values, result)
|
4383
4383
|
result = new_call(new_call(s(:lit, val[1]), :"**", argl(val[3])), :"-@")
|
4384
|
+
## TODO: why is this 2.0 only?
|
4384
4385
|
debug20 12, val, result
|
4385
4386
|
|
4386
4387
|
result
|
@@ -5022,20 +5023,24 @@ def _reduce_326(val, _values, result)
|
|
5022
5023
|
end
|
5023
5024
|
|
5024
5025
|
def _reduce_327(val, _values, result)
|
5025
|
-
result = self.in_def
|
5026
|
+
result = [self.in_def, self.lexer.cmdarg.stack.dup]
|
5026
5027
|
|
5027
5028
|
self.comments.push self.lexer.comments
|
5028
5029
|
self.in_def = true
|
5029
5030
|
self.env.extend
|
5031
|
+
# TODO: local->cmdargs = cmdarg_stack;
|
5032
|
+
# TODO: port local_push_gen and local_pop_gen
|
5033
|
+
lexer.cmdarg.stack.replace [false]
|
5030
5034
|
|
5031
5035
|
result
|
5032
5036
|
end
|
5033
5037
|
|
5034
5038
|
def _reduce_328(val, _values, result)
|
5035
|
-
in_def = val[2]
|
5039
|
+
in_def, cmdarg = val[2]
|
5036
5040
|
|
5037
5041
|
result = new_defn val
|
5038
5042
|
|
5043
|
+
lexer.cmdarg.stack.replace cmdarg
|
5039
5044
|
self.env.unextend
|
5040
5045
|
self.in_def = in_def
|
5041
5046
|
self.lexer.comments # we don't care about comments in the body
|
@@ -5371,20 +5376,22 @@ def _reduce_392(val, _values, result)
|
|
5371
5376
|
result
|
5372
5377
|
end
|
5373
5378
|
|
5374
|
-
|
5379
|
+
def _reduce_393(val, _values, result)
|
5380
|
+
result = 0
|
5381
|
+
result
|
5382
|
+
end
|
5375
5383
|
|
5376
5384
|
# reduce 394 omitted
|
5377
5385
|
|
5378
5386
|
def _reduce_395(val, _values, result)
|
5379
5387
|
result = args val
|
5380
|
-
result = 0 if result == s(:args)
|
5381
5388
|
|
5382
5389
|
result
|
5383
5390
|
end
|
5384
5391
|
|
5385
5392
|
def _reduce_396(val, _values, result)
|
5386
|
-
result = 0
|
5387
5393
|
self.lexer.command_start = true
|
5394
|
+
result = s(:args)
|
5388
5395
|
|
5389
5396
|
result
|
5390
5397
|
end
|
@@ -5438,8 +5445,6 @@ def _reduce_405(val, _values, result)
|
|
5438
5445
|
lpar, args, body = val
|
5439
5446
|
lexer.lpar_beg = lpar
|
5440
5447
|
|
5441
|
-
args = 0 if args == s(:args)
|
5442
|
-
|
5443
5448
|
call = new_call nil, :lambda
|
5444
5449
|
result = new_iter call, args, body
|
5445
5450
|
self.env.unextend
|
@@ -5455,6 +5460,7 @@ end
|
|
5455
5460
|
|
5456
5461
|
def _reduce_407(val, _values, result)
|
5457
5462
|
result = val[0]
|
5463
|
+
result = 0 if result == s(:args)
|
5458
5464
|
|
5459
5465
|
result
|
5460
5466
|
end
|
@@ -5497,8 +5503,8 @@ end
|
|
5497
5503
|
|
5498
5504
|
def _reduce_413(val, _values, result)
|
5499
5505
|
# TODO:
|
5500
|
-
|
5501
|
-
|
5506
|
+
## if (nd_type($1) == NODE_YIELD) {
|
5507
|
+
## compile_error(PARSER_ARG "block given to yield");
|
5502
5508
|
|
5503
5509
|
syntax_error "Both block arg and actual block given." if
|
5504
5510
|
val[0].block_pass?
|
@@ -5951,7 +5957,9 @@ def _reduce_484(val, _values, result)
|
|
5951
5957
|
lexer.brace_nest,
|
5952
5958
|
lexer.string_nest, # TODO: remove
|
5953
5959
|
lexer.cond.store,
|
5954
|
-
lexer.cmdarg.store
|
5960
|
+
lexer.cmdarg.store,
|
5961
|
+
lexer.lex_state,
|
5962
|
+
]
|
5955
5963
|
|
5956
5964
|
lexer.lex_strterm = nil
|
5957
5965
|
lexer.brace_nest = 0
|
@@ -5966,7 +5974,7 @@ def _reduce_485(val, _values, result)
|
|
5966
5974
|
# TODO: tRCURLY -> tSTRING_DEND
|
5967
5975
|
_, memo, stmt, _ = val
|
5968
5976
|
|
5969
|
-
lex_strterm, brace_nest, string_nest, oldcond, oldcmdarg = memo
|
5977
|
+
lex_strterm, brace_nest, string_nest, oldcond, oldcmdarg, oldlex_state = memo
|
5970
5978
|
|
5971
5979
|
lexer.lex_strterm = lex_strterm
|
5972
5980
|
lexer.brace_nest = brace_nest
|
@@ -5975,6 +5983,8 @@ def _reduce_485(val, _values, result)
|
|
5975
5983
|
lexer.cond.restore oldcond
|
5976
5984
|
lexer.cmdarg.restore oldcmdarg
|
5977
5985
|
|
5986
|
+
lexer.lex_state = oldlex_state
|
5987
|
+
|
5978
5988
|
case stmt
|
5979
5989
|
when Sexp then
|
5980
5990
|
case stmt[0]
|
@@ -6185,11 +6195,15 @@ def _reduce_523(val, _values, result)
|
|
6185
6195
|
result = val[1]
|
6186
6196
|
self.lexer.lex_state = :expr_beg
|
6187
6197
|
self.lexer.command_start = true
|
6198
|
+
# TODO:
|
6199
|
+
# $<num>$ = parser->parser_in_kwarg;
|
6200
|
+
# parser->parser_in_kwarg = 1;
|
6188
6201
|
|
6189
6202
|
result
|
6190
6203
|
end
|
6191
6204
|
|
6192
6205
|
def _reduce_524(val, _values, result)
|
6206
|
+
# TODO: parser->parser_in_kwarg = $<num>1;
|
6193
6207
|
result = val[0]
|
6194
6208
|
self.lexer.lex_state = :expr_beg
|
6195
6209
|
self.lexer.command_start = true
|