ruby_parser 3.12.0 → 3.18.1
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/.autotest +18 -29
- data/History.rdoc +283 -0
- data/Manifest.txt +12 -4
- data/README.rdoc +4 -3
- data/Rakefile +189 -51
- data/bin/ruby_parse +3 -1
- data/bin/ruby_parse_extract_error +19 -36
- data/compare/normalize.rb +76 -4
- data/debugging.md +190 -0
- data/gauntlet.md +106 -0
- data/lib/rp_extensions.rb +14 -42
- data/lib/rp_stringscanner.rb +20 -51
- data/lib/ruby20_parser.rb +4659 -4218
- data/lib/ruby20_parser.y +953 -602
- data/lib/ruby21_parser.rb +4723 -4308
- data/lib/ruby21_parser.y +956 -605
- data/lib/ruby22_parser.rb +4762 -4337
- data/lib/ruby22_parser.y +960 -612
- data/lib/ruby23_parser.rb +4761 -4342
- data/lib/ruby23_parser.y +961 -613
- data/lib/ruby24_parser.rb +4791 -4341
- data/lib/ruby24_parser.y +968 -612
- data/lib/ruby25_parser.rb +4791 -4341
- data/lib/ruby25_parser.y +968 -612
- data/lib/ruby26_parser.rb +7287 -0
- data/lib/ruby26_parser.y +2749 -0
- data/lib/ruby27_parser.rb +8517 -0
- data/lib/ruby27_parser.y +3346 -0
- data/lib/ruby30_parser.rb +8751 -0
- data/lib/ruby30_parser.y +3472 -0
- data/lib/ruby3_parser.yy +3476 -0
- data/lib/ruby_lexer.rb +611 -826
- data/lib/ruby_lexer.rex +48 -40
- data/lib/ruby_lexer.rex.rb +122 -46
- data/lib/ruby_lexer_strings.rb +638 -0
- data/lib/ruby_parser.rb +38 -34
- data/lib/ruby_parser.yy +1710 -704
- data/lib/ruby_parser_extras.rb +987 -553
- data/test/test_ruby_lexer.rb +1718 -1539
- data/test/test_ruby_parser.rb +3957 -2164
- data/test/test_ruby_parser_extras.rb +39 -4
- data/tools/munge.rb +250 -0
- data/tools/ripper.rb +44 -0
- data.tar.gz.sig +0 -0
- metadata +68 -47
- metadata.gz.sig +0 -0
- data/lib/ruby18_parser.rb +0 -5793
- data/lib/ruby18_parser.y +0 -1908
- data/lib/ruby19_parser.rb +0 -6185
- data/lib/ruby19_parser.y +0 -2116
@@ -16,11 +16,11 @@ class TestStackState < Minitest::Test
|
|
16
16
|
p = RubyParser.latest
|
17
17
|
s = nil
|
18
18
|
|
19
|
-
out, err = capture_io
|
19
|
+
out, err = capture_io {
|
20
20
|
s = p.handle_encoding str
|
21
|
-
|
21
|
+
}
|
22
22
|
|
23
|
-
assert_equal orig_str.sub(/\357\273\277/,
|
23
|
+
assert_equal orig_str.sub(/\357\273\277/, ""), s
|
24
24
|
|
25
25
|
exp_err = ""
|
26
26
|
|
@@ -162,7 +162,7 @@ end
|
|
162
162
|
|
163
163
|
class TestEnvironment < Minitest::Test
|
164
164
|
def deny t
|
165
|
-
assert !
|
165
|
+
assert !t
|
166
166
|
end
|
167
167
|
|
168
168
|
def setup
|
@@ -224,3 +224,38 @@ class TestEnvironment < Minitest::Test
|
|
224
224
|
assert_equal expected0, @env.all
|
225
225
|
end
|
226
226
|
end
|
227
|
+
|
228
|
+
class Fake20
|
229
|
+
include RubyParserStuff
|
230
|
+
|
231
|
+
def initialize
|
232
|
+
end
|
233
|
+
|
234
|
+
def s(*a) # bypass lexer/lineno stuff that RP overrides in
|
235
|
+
Kernel.send :s, *a
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
class TestValueExpr < Minitest::Test
|
240
|
+
def assert_value_expr exp, input
|
241
|
+
assert_equal exp, Fake20.new.value_expr(input.line(1))
|
242
|
+
end
|
243
|
+
|
244
|
+
def assert_remove_begin exp, input
|
245
|
+
assert_equal exp, Fake20.new.remove_begin(input.line(1))
|
246
|
+
end
|
247
|
+
|
248
|
+
def test_value_expr
|
249
|
+
assert_value_expr s(:nil), s(:begin)
|
250
|
+
assert_value_expr s(:nil), s(:begin, s(:nil))
|
251
|
+
assert_value_expr s(:nil), s(:begin, s(:begin, s(:nil)))
|
252
|
+
assert_value_expr s(:begin, s(:nil), s(:nil)), s(:begin, s(:nil), s(:nil))
|
253
|
+
end
|
254
|
+
|
255
|
+
def test_remove_begin
|
256
|
+
assert_remove_begin s(:nil), s(:begin)
|
257
|
+
assert_remove_begin s(:nil), s(:begin, s(:nil))
|
258
|
+
assert_remove_begin s(:nil), s(:begin, s(:begin, s(:nil)))
|
259
|
+
assert_remove_begin s(:begin, s(:nil), s(:nil)), s(:begin, s(:nil), s(:nil))
|
260
|
+
end
|
261
|
+
end
|
data/tools/munge.rb
ADDED
@@ -0,0 +1,250 @@
|
|
1
|
+
#!/usr/bin/env ruby -ws
|
2
|
+
|
3
|
+
$v ||= false
|
4
|
+
|
5
|
+
stack = []
|
6
|
+
last_token = nil
|
7
|
+
reduce_line = nil
|
8
|
+
|
9
|
+
def munge s
|
10
|
+
renames = [
|
11
|
+
"'='", "tEQL",
|
12
|
+
"'!'", "tBANG",
|
13
|
+
"'%'", "tPERCENT",
|
14
|
+
"'&'", "tAMPER2",
|
15
|
+
"'('", "tLPAREN2",
|
16
|
+
"')'", "tRPAREN",
|
17
|
+
"'*'", "tSTAR2",
|
18
|
+
"'+'", "tPLUS",
|
19
|
+
"','", "tCOMMA",
|
20
|
+
"'-'", "tMINUS",
|
21
|
+
"'.'", "tDOT",
|
22
|
+
"'/'", "tDIVIDE",
|
23
|
+
"';'", "tSEMI",
|
24
|
+
"':'", "tCOLON",
|
25
|
+
"'<'", "tLT",
|
26
|
+
"'>'", "tGT",
|
27
|
+
"'?'", "tEH",
|
28
|
+
"'['", "tLBRACK",
|
29
|
+
"'\\n'", "tNL",
|
30
|
+
"']'", "tRBRACK",
|
31
|
+
"'^'", "tCARET",
|
32
|
+
"'`'", "tBACK_REF2",
|
33
|
+
"'{'", "tLCURLY",
|
34
|
+
"'|'", "tPIPE",
|
35
|
+
"'}'", "tRCURLY",
|
36
|
+
"'~'", "tTILDE",
|
37
|
+
'"["', "tLBRACK",
|
38
|
+
|
39
|
+
# 2.0 changes?
|
40
|
+
'"<=>"', "tCMP",
|
41
|
+
'"=="', "tEQ",
|
42
|
+
'"==="', "tEQQ",
|
43
|
+
'"!~"', "tNMATCH",
|
44
|
+
'"=~"', "tMATCH",
|
45
|
+
'">="', "tGEQ",
|
46
|
+
'"<="', "tLEQ",
|
47
|
+
'"!="', "tNEQ",
|
48
|
+
'"<<"', "tLSHFT",
|
49
|
+
'">>"', "tRSHFT",
|
50
|
+
'"*"', "tSTAR",
|
51
|
+
|
52
|
+
'".."', "tDOT2",
|
53
|
+
|
54
|
+
'"&"', "tAMPER",
|
55
|
+
'"&&"', "tANDOP",
|
56
|
+
'"&."', "tLONELY",
|
57
|
+
'"||"', "tOROP",
|
58
|
+
|
59
|
+
'"..."', "tDOT3",
|
60
|
+
'"**"', "tPOW",
|
61
|
+
'"unary+"', "tUPLUS",
|
62
|
+
'"unary-"', "tUMINUS",
|
63
|
+
'"[]"', "tAREF",
|
64
|
+
'"[]="', "tASET",
|
65
|
+
'"::"', "tCOLON2",
|
66
|
+
'"{ arg"', "tLBRACE_ARG",
|
67
|
+
'"( arg"', "tLPAREN_ARG",
|
68
|
+
'"("', "tLPAREN",
|
69
|
+
'rparen', "tRPAREN",
|
70
|
+
'"{"', "tLBRACE",
|
71
|
+
'"=>"', "tASSOC",
|
72
|
+
'"->"', "tLAMBDA",
|
73
|
+
'":: at EXPR_BEG"', "tCOLON3",
|
74
|
+
'"**arg"', "tDSTAR",
|
75
|
+
'","', "tCOMMA",
|
76
|
+
|
77
|
+
# other
|
78
|
+
|
79
|
+
'kTERMINATOR', "tSTRING_END",
|
80
|
+
'"kTERMINATOR"', "tSTRING_END",
|
81
|
+
'kTRCURLY', "tSTRING_DEND",
|
82
|
+
|
83
|
+
'"symbol literal"', "tSYMBEG",
|
84
|
+
'"string literal"', "tSTRING_BEG",
|
85
|
+
'"backtick literal"', "tXSTRING_BEG",
|
86
|
+
'"regexp literal"', "tREGEXP_BEG",
|
87
|
+
'"word list"', "tWORDS_BEG",
|
88
|
+
'"verbatim word list"', "tQWORDS_BEG",
|
89
|
+
'"symbol list"', "tSYMBOLS_BEG",
|
90
|
+
'"verbatim symbol list"', "tQSYMBOLS_BEG",
|
91
|
+
'"terminator"', "tSTRING_END",
|
92
|
+
'"\'}\'"', "tSTRING_DEND",
|
93
|
+
|
94
|
+
'"string literal"',"tSTRING_BEG",
|
95
|
+
'"literal content"', "tSTRING_CONTENT",
|
96
|
+
/\$/, "", # try to remove these lumps?
|
97
|
+
|
98
|
+
'tLBRACK2', "tLBRACK", # HACK
|
99
|
+
|
100
|
+
"' '", "tSPACE", # needs to be later to avoid bad hits
|
101
|
+
|
102
|
+
"/* empty */", "none",
|
103
|
+
/^\s*$/, "",
|
104
|
+
|
105
|
+
"keyword_BEGIN", "klBEGIN",
|
106
|
+
"keyword_END", "klEND",
|
107
|
+
/keyword_(\w+)/, proc { "k#{$1.upcase}" },
|
108
|
+
/\bk_([a-z_]+)/, proc { "k#{$1.upcase}" },
|
109
|
+
/modifier_(\w+)/, proc { "k#{$1.upcase}_MOD" },
|
110
|
+
"kVARIABLE", "keyword_variable", # ugh
|
111
|
+
"tCONST", "kCONST",
|
112
|
+
|
113
|
+
# 2.6 collapses klBEGIN to kBEGIN
|
114
|
+
"klBEGIN", "kBEGIN",
|
115
|
+
"klEND", "kEND",
|
116
|
+
|
117
|
+
/keyword_(\w+)/, proc { "k#{$1.upcase}" },
|
118
|
+
/\bk_([^_][a-z_]+)/, proc { "k#{$1.upcase}" },
|
119
|
+
/modifier_(\w+)/, proc { "k#{$1.upcase}_MOD" },
|
120
|
+
|
121
|
+
"kVARIABLE", "keyword_variable", # ugh: this is a rule name
|
122
|
+
|
123
|
+
# UGH
|
124
|
+
"k_LINE__", "k__LINE__",
|
125
|
+
"k_FILE__", "k__FILE__",
|
126
|
+
"k_ENCODING__", "k__ENCODING__",
|
127
|
+
|
128
|
+
'"defined?"', "kDEFINED",
|
129
|
+
|
130
|
+
"<none>", "none",
|
131
|
+
|
132
|
+
'"do (for condition)"', "kDO_COND",
|
133
|
+
'"do (for lambda)"', "kDO_LAMBDA",
|
134
|
+
'"do (for block)"', "kDO_BLOCK",
|
135
|
+
'"local variable or method"', "tIDENTIFIER",
|
136
|
+
|
137
|
+
/\"(\w+) \(modifier\)\"/, proc { |x| "k#{$1.upcase}_MOD" },
|
138
|
+
/\"(\w+)\"/, proc { |x| "k#{$1.upcase}" },
|
139
|
+
/\"`(\w+)'\"/, proc { |x| "k#{$1.upcase}" },
|
140
|
+
|
141
|
+
/@(\d+)(\s+|$)/, "",
|
142
|
+
/\$?@(\d+) */, "", # TODO: remove?
|
143
|
+
|
144
|
+
/_EXPR/, "",
|
145
|
+
]
|
146
|
+
|
147
|
+
renames.each_slice(2) do |(a, b)|
|
148
|
+
if Proc === b then
|
149
|
+
s.gsub!(a, &b)
|
150
|
+
else
|
151
|
+
s.gsub!(a, b)
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
if s.empty? then
|
156
|
+
nil
|
157
|
+
else
|
158
|
+
s.strip.squeeze " "
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
ARGF.each_line do |line|
|
163
|
+
case line
|
164
|
+
when /^(Stack now|Entering state|Shifting|Cleanup|Starting)/ then
|
165
|
+
# do nothing
|
166
|
+
when /^vtable_/ then
|
167
|
+
# do nothing
|
168
|
+
when /Gem::MissingSpecError/ then
|
169
|
+
# do nothing -- ruby 2.5 is being bitchy?
|
170
|
+
when /^Reading a token: Next token is token (.*?) \(\)/ then
|
171
|
+
token = munge $1
|
172
|
+
next if last_token == token
|
173
|
+
puts "next token is %p" % [token]
|
174
|
+
last_token = token
|
175
|
+
when /^Reading a token: / then
|
176
|
+
next # skip
|
177
|
+
when /^read\s+:(\w+)/ then # read :tNL(tNL) nil
|
178
|
+
token = munge $1
|
179
|
+
next if last_token == token
|
180
|
+
puts "next token is %p" % [token]
|
181
|
+
last_token = token
|
182
|
+
when /^Next token is token ("[^"]+"|\S+)/ then
|
183
|
+
token = munge $1
|
184
|
+
next if last_token == token
|
185
|
+
puts "next token is %p" % [token]
|
186
|
+
last_token = token
|
187
|
+
when /^read\s+false/ then # read false($end) "$end"
|
188
|
+
puts "next token is EOF"
|
189
|
+
when /^Now at end of input./ then
|
190
|
+
# do nothing
|
191
|
+
when /^.:scan=>\["([^"]+)"/ then
|
192
|
+
puts "scan = %p" % [$1]
|
193
|
+
when /^.:getch=>\["([^"]+)/ then
|
194
|
+
puts "SCAN = %p" % [$1]
|
195
|
+
when /^Reducing stack by rule (\d+) \(line (\d+)\):/ then
|
196
|
+
reduce_line = $2.to_i
|
197
|
+
when /^ \$\d+ = (?:token|nterm) (.+) \(.*\)/ then
|
198
|
+
item = $1
|
199
|
+
stack << munge(item)
|
200
|
+
when /^-> \$\$ = (?:token|nterm) (.+) \(.*\)/ then
|
201
|
+
stack << "none" if stack.empty?
|
202
|
+
item = munge $1
|
203
|
+
x = stack.compact.map { |s| munge s.strip }.compact.join " "
|
204
|
+
if x != item then # prevent kdef -> kdef
|
205
|
+
if $v && reduce_line then
|
206
|
+
puts "reduce #{x} --> #{item} at #{reduce_line}".squeeze " "
|
207
|
+
else
|
208
|
+
puts "reduce #{x} --> #{item}".squeeze " "
|
209
|
+
end
|
210
|
+
puts
|
211
|
+
end
|
212
|
+
reduce_line = nil
|
213
|
+
stack.clear
|
214
|
+
when /^reduce/ then # ruby_parser side
|
215
|
+
puts munge line.chomp
|
216
|
+
puts
|
217
|
+
when /^(\w+_stack)\.(\w+)/ then
|
218
|
+
# TODO: make pretty, but still informative w/ line numbers etc
|
219
|
+
puts line.gsub("true", "1").gsub("false", "0")
|
220
|
+
# puts "#{$1}(#{$2})"
|
221
|
+
when /^(\w+_stack(\(\w+\))?: \S+)/ then
|
222
|
+
# _data = $v ? line.chomp : $1
|
223
|
+
# puts line
|
224
|
+
# TODO: make pretty, but still informative w/ line numbers etc
|
225
|
+
puts line.gsub("true", "1").gsub("false", "0")
|
226
|
+
when /^lex_state: :?([\w|]+) -> :?([\w|]+)(?: (?:at|from) (.*))?/ then
|
227
|
+
a, b, c = $1.upcase, $2.upcase, $3
|
228
|
+
a.gsub!(/EXPR_/, "")
|
229
|
+
b.gsub!(/EXPR_/, "")
|
230
|
+
if c && $v then
|
231
|
+
puts "lex_state: #{a} -> #{b} at #{c}"
|
232
|
+
else
|
233
|
+
puts "lex_state: #{a} -> #{b}"
|
234
|
+
end
|
235
|
+
when /debug|FUCK/ then
|
236
|
+
puts line.chomp
|
237
|
+
when /^(#.*parse error|on )/ then
|
238
|
+
puts line.chomp
|
239
|
+
when /^(goto|shift| +\[|$)/ then # racc
|
240
|
+
# do nothing
|
241
|
+
# when /^Reading a token: Now at end of input./ then
|
242
|
+
# # puts "EOF"
|
243
|
+
# when /^Reading a token: Next token is token (.+)/ then
|
244
|
+
# puts "READ: #{$1.inspect}"
|
245
|
+
when /^accept/ then
|
246
|
+
puts "DONE"
|
247
|
+
else
|
248
|
+
puts "unparsed: #{line.chomp}"
|
249
|
+
end
|
250
|
+
end
|
data/tools/ripper.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
#!/usr/bin/env ruby -ws
|
2
|
+
|
3
|
+
$b ||= false # bug mode -- ripper is buggy, use Ripper.sexp
|
4
|
+
$d ||= false # debug -- turn on yydebug
|
5
|
+
$p ||= false # Use pp
|
6
|
+
|
7
|
+
require "ripper/sexp"
|
8
|
+
require "pp" if $p
|
9
|
+
|
10
|
+
if ARGV.empty? then
|
11
|
+
warn "reading from stdin"
|
12
|
+
ARGV << "-"
|
13
|
+
end
|
14
|
+
|
15
|
+
class MySexpBuilder < Ripper::SexpBuilderPP
|
16
|
+
def on_parse_error msg
|
17
|
+
Kernel.warn msg
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
ARGV.each do |path|
|
22
|
+
src = path == "-" ? $stdin.read : File.read(path)
|
23
|
+
|
24
|
+
sexp = if $b then
|
25
|
+
Ripper.sexp src
|
26
|
+
else
|
27
|
+
rip = MySexpBuilder.new src
|
28
|
+
rip.yydebug = $d
|
29
|
+
rip.parse
|
30
|
+
|
31
|
+
if rip.error? then
|
32
|
+
warn "skipping"
|
33
|
+
next
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
puts "accept"
|
38
|
+
|
39
|
+
if $p then
|
40
|
+
pp sexp
|
41
|
+
else
|
42
|
+
p sexp
|
43
|
+
end
|
44
|
+
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.18.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
13
|
+
MIIDPjCCAiagAwIBAgIBBTANBgkqhkiG9w0BAQsFADBFMRMwEQYDVQQDDApyeWFu
|
14
14
|
ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
|
15
|
-
|
15
|
+
GRYDY29tMB4XDTIwMTIyMjIwMzgzMFoXDTIxMTIyMjIwMzgzMFowRTETMBEGA1UE
|
16
16
|
AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
|
17
17
|
JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
|
18
18
|
b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
|
@@ -21,15 +21,15 @@ cert_chain:
|
|
21
21
|
GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
|
22
22
|
qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
|
23
23
|
gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
|
24
|
-
HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
24
|
+
HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBCwUAA4IB
|
25
|
+
AQAE3XRm1YZcCVjAJy5yMZvTOFrS7B2SYErc+0QwmKYbHztTTDY2m5Bii+jhpuxh
|
26
|
+
H+ETcU1z8TUKLpsBUP4kUpIRowkVN1p/jKapV8T3Rbwq+VuYFe+GMKsf8wGZSecG
|
27
|
+
oMQ8DzzauZfbvhe2kDg7G9BBPU0wLQlY25rDcCy9bLnD7R0UK3ONqpwvsI5I7x5X
|
28
|
+
ZIMXR0a9/DG+55mawwdGzCQobDKiSNLK89KK7OcNTALKU0DfgdTkktdgKchzKHqZ
|
29
|
+
d/AHw/kcnU6iuMUoJEcGiJd4gVCTn1l3cDcIvxakGslCA88Jubw0Sqatan0TnC9g
|
30
|
+
KToW560QIey7SPfHWduzFJnV
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date:
|
32
|
+
date: 2021-11-10 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: sexp_processor
|
@@ -37,42 +37,62 @@ dependencies:
|
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '4.
|
40
|
+
version: '4.16'
|
41
41
|
type: :runtime
|
42
42
|
prerelease: false
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '4.
|
47
|
+
version: '4.16'
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rake
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10'
|
52
55
|
- - "<"
|
53
56
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
57
|
+
version: '15'
|
55
58
|
type: :development
|
56
59
|
prerelease: false
|
57
60
|
version_requirements: !ruby/object:Gem::Requirement
|
58
61
|
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '10'
|
59
65
|
- - "<"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
67
|
+
version: '15'
|
62
68
|
- !ruby/object:Gem::Dependency
|
63
69
|
name: oedipus_lex
|
64
70
|
requirement: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
72
|
- - "~>"
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version: '2.
|
74
|
+
version: '2.6'
|
75
|
+
type: :development
|
76
|
+
prerelease: false
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '2.6'
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: racc
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '1.5'
|
69
89
|
type: :development
|
70
90
|
prerelease: false
|
71
91
|
version_requirements: !ruby/object:Gem::Requirement
|
72
92
|
requirements:
|
73
93
|
- - "~>"
|
74
94
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
95
|
+
version: '1.5'
|
76
96
|
- !ruby/object:Gem::Dependency
|
77
97
|
name: rdoc
|
78
98
|
requirement: !ruby/object:Gem::Requirement
|
@@ -93,39 +113,25 @@ dependencies:
|
|
93
113
|
- - "<"
|
94
114
|
- !ruby/object:Gem::Version
|
95
115
|
version: '7'
|
96
|
-
- !ruby/object:Gem::Dependency
|
97
|
-
name: racc
|
98
|
-
requirement: !ruby/object:Gem::Requirement
|
99
|
-
requirements:
|
100
|
-
- - "~>"
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version: 1.4.6
|
103
|
-
type: :development
|
104
|
-
prerelease: false
|
105
|
-
version_requirements: !ruby/object:Gem::Requirement
|
106
|
-
requirements:
|
107
|
-
- - "~>"
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: 1.4.6
|
110
116
|
- !ruby/object:Gem::Dependency
|
111
117
|
name: hoe
|
112
118
|
requirement: !ruby/object:Gem::Requirement
|
113
119
|
requirements:
|
114
120
|
- - "~>"
|
115
121
|
- !ruby/object:Gem::Version
|
116
|
-
version: '3.
|
122
|
+
version: '3.22'
|
117
123
|
type: :development
|
118
124
|
prerelease: false
|
119
125
|
version_requirements: !ruby/object:Gem::Requirement
|
120
126
|
requirements:
|
121
127
|
- - "~>"
|
122
128
|
- !ruby/object:Gem::Version
|
123
|
-
version: '3.
|
129
|
+
version: '3.22'
|
124
130
|
description: |-
|
125
131
|
ruby_parser (RP) is a ruby parser written in pure ruby (utilizing
|
126
|
-
racc--which does by default use a C extension).
|
127
|
-
|
128
|
-
|
132
|
+
racc--which does by default use a C extension). It outputs
|
133
|
+
s-expressions which can be manipulated and converted back to ruby via
|
134
|
+
the ruby2ruby gem.
|
129
135
|
|
130
136
|
As an example:
|
131
137
|
|
@@ -148,6 +154,7 @@ description: |-
|
|
148
154
|
* 1.8 parser is at 99.9739% accuracy, 3.651 sigma
|
149
155
|
* 1.9 parser is at 99.9940% accuracy, 4.013 sigma
|
150
156
|
* 2.0 parser is at 99.9939% accuracy, 4.008 sigma
|
157
|
+
* 2.6 parser is at 99.9972% accuracy, 4.191 sigma
|
151
158
|
email:
|
152
159
|
- ryand-ruby@zenspider.com
|
153
160
|
executables:
|
@@ -158,6 +165,8 @@ extra_rdoc_files:
|
|
158
165
|
- History.rdoc
|
159
166
|
- Manifest.txt
|
160
167
|
- README.rdoc
|
168
|
+
- debugging.md
|
169
|
+
- gauntlet.md
|
161
170
|
files:
|
162
171
|
- ".autotest"
|
163
172
|
- History.rdoc
|
@@ -167,13 +176,11 @@ files:
|
|
167
176
|
- bin/ruby_parse
|
168
177
|
- bin/ruby_parse_extract_error
|
169
178
|
- compare/normalize.rb
|
179
|
+
- debugging.md
|
180
|
+
- gauntlet.md
|
170
181
|
- lib/.document
|
171
182
|
- lib/rp_extensions.rb
|
172
183
|
- lib/rp_stringscanner.rb
|
173
|
-
- lib/ruby18_parser.rb
|
174
|
-
- lib/ruby18_parser.y
|
175
|
-
- lib/ruby19_parser.rb
|
176
|
-
- lib/ruby19_parser.y
|
177
184
|
- lib/ruby20_parser.rb
|
178
185
|
- lib/ruby20_parser.y
|
179
186
|
- lib/ruby21_parser.rb
|
@@ -186,20 +193,32 @@ files:
|
|
186
193
|
- lib/ruby24_parser.y
|
187
194
|
- lib/ruby25_parser.rb
|
188
195
|
- lib/ruby25_parser.y
|
196
|
+
- lib/ruby26_parser.rb
|
197
|
+
- lib/ruby26_parser.y
|
198
|
+
- lib/ruby27_parser.rb
|
199
|
+
- lib/ruby27_parser.y
|
200
|
+
- lib/ruby30_parser.rb
|
201
|
+
- lib/ruby30_parser.y
|
202
|
+
- lib/ruby3_parser.yy
|
189
203
|
- lib/ruby_lexer.rb
|
190
204
|
- lib/ruby_lexer.rex
|
191
205
|
- lib/ruby_lexer.rex.rb
|
206
|
+
- lib/ruby_lexer_strings.rb
|
192
207
|
- lib/ruby_parser.rb
|
193
208
|
- lib/ruby_parser.yy
|
194
209
|
- lib/ruby_parser_extras.rb
|
195
210
|
- test/test_ruby_lexer.rb
|
196
211
|
- test/test_ruby_parser.rb
|
197
212
|
- test/test_ruby_parser_extras.rb
|
213
|
+
- tools/munge.rb
|
214
|
+
- tools/ripper.rb
|
198
215
|
homepage: https://github.com/seattlerb/ruby_parser
|
199
216
|
licenses:
|
200
217
|
- MIT
|
201
|
-
metadata:
|
202
|
-
|
218
|
+
metadata:
|
219
|
+
homepage_uri: https://github.com/seattlerb/ruby_parser
|
220
|
+
bug_tracker_uri: https://github.com/seattlerb/ruby_parser/issues
|
221
|
+
post_install_message:
|
203
222
|
rdoc_options:
|
204
223
|
- "--main"
|
205
224
|
- README.rdoc
|
@@ -209,16 +228,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
209
228
|
requirements:
|
210
229
|
- - ">="
|
211
230
|
- !ruby/object:Gem::Version
|
212
|
-
version: '
|
231
|
+
version: '2.1'
|
232
|
+
- - "<"
|
233
|
+
- !ruby/object:Gem::Version
|
234
|
+
version: '4'
|
213
235
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
214
236
|
requirements:
|
215
237
|
- - ">="
|
216
238
|
- !ruby/object:Gem::Version
|
217
239
|
version: '0'
|
218
240
|
requirements: []
|
219
|
-
|
220
|
-
|
221
|
-
signing_key:
|
241
|
+
rubygems_version: 3.2.16
|
242
|
+
signing_key:
|
222
243
|
specification_version: 4
|
223
244
|
summary: ruby_parser (RP) is a ruby parser written in pure ruby (utilizing racc--which
|
224
245
|
does by default use a C extension)
|
metadata.gz.sig
CHANGED
Binary file
|