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
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
|