ruby_parser 3.13.1 → 3.21.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/.autotest +18 -29
- data/History.rdoc +312 -0
- data/Manifest.txt +16 -15
- data/README.rdoc +13 -9
- data/Rakefile +237 -106
- data/bin/ruby_parse +3 -1
- data/bin/ruby_parse_extract_error +9 -4
- data/compare/normalize.rb +54 -6
- data/debugging.md +172 -0
- data/gauntlet.md +107 -0
- data/lib/rp_extensions.rb +15 -36
- data/lib/rp_stringscanner.rb +20 -51
- data/lib/ruby_lexer.rb +515 -812
- data/lib/ruby_lexer.rex +33 -27
- data/lib/ruby_lexer.rex.rb +64 -31
- data/lib/ruby_lexer_strings.rb +638 -0
- data/lib/ruby_parser.rb +46 -36
- data/lib/{ruby_parser.yy → ruby_parser2.yy} +1400 -488
- data/lib/ruby_parser20.rb +10953 -0
- data/lib/ruby_parser21.rb +10978 -0
- data/lib/ruby_parser22.rb +11119 -0
- data/lib/ruby_parser23.rb +11160 -0
- data/lib/ruby_parser24.rb +11209 -0
- data/lib/ruby_parser25.rb +11209 -0
- data/lib/ruby_parser26.rb +11231 -0
- data/lib/ruby_parser27.rb +12960 -0
- data/lib/{ruby26_parser.y → ruby_parser3.yy} +1652 -521
- data/lib/ruby_parser30.rb +13292 -0
- data/lib/ruby_parser31.rb +13625 -0
- data/lib/ruby_parser32.rb +13577 -0
- data/lib/ruby_parser33.rb +13577 -0
- data/lib/ruby_parser_extras.rb +988 -474
- data/test/test_ruby_lexer.rb +1339 -1155
- data/test/test_ruby_parser.rb +4255 -2103
- data/test/test_ruby_parser_extras.rb +39 -4
- data/tools/munge.rb +52 -13
- data/tools/ripper.rb +24 -6
- data.tar.gz.sig +0 -0
- metadata +73 -56
- metadata.gz.sig +0 -0
- data/lib/ruby20_parser.rb +0 -6869
- data/lib/ruby20_parser.y +0 -2431
- data/lib/ruby21_parser.rb +0 -6944
- data/lib/ruby21_parser.y +0 -2449
- data/lib/ruby22_parser.rb +0 -6968
- data/lib/ruby22_parser.y +0 -2458
- data/lib/ruby23_parser.rb +0 -6987
- data/lib/ruby23_parser.y +0 -2460
- data/lib/ruby24_parser.rb +0 -6994
- data/lib/ruby24_parser.y +0 -2466
- data/lib/ruby25_parser.rb +0 -6994
- data/lib/ruby25_parser.y +0 -2466
- data/lib/ruby26_parser.rb +0 -7012
data/lib/ruby_parser.rb
CHANGED
@@ -11,23 +11,22 @@ class RubyParser
|
|
11
11
|
|
12
12
|
attr_accessor :current
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end
|
14
|
+
def self.for_current_ruby
|
15
|
+
name = "V#{RUBY_VERSION[/^\d+\.\d+/].delete "."}"
|
16
|
+
klass = if const_defined? name then
|
17
|
+
const_get name
|
18
|
+
else
|
19
|
+
latest = VERSIONS.first
|
20
|
+
warn "NOTE: RubyParser::#{name} undefined, using #{latest}."
|
21
|
+
latest
|
22
|
+
end
|
24
23
|
|
25
|
-
|
26
|
-
@version ||= Parser > self && self.name[/(?:V|Ruby)(\d+)/, 1].to_i
|
27
|
-
end
|
24
|
+
klass.new
|
28
25
|
end
|
29
26
|
|
30
|
-
|
27
|
+
def self.latest
|
28
|
+
VERSIONS.first.new
|
29
|
+
end
|
31
30
|
|
32
31
|
def process s, f = "(string)", t = 10
|
33
32
|
e = nil
|
@@ -48,40 +47,51 @@ class RubyParser
|
|
48
47
|
# do nothing
|
49
48
|
end
|
50
49
|
|
51
|
-
|
52
|
-
|
53
|
-
end
|
50
|
+
class Parser < Racc::Parser
|
51
|
+
include RubyParserStuff
|
54
52
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
const_get name
|
59
|
-
else
|
60
|
-
latest = VERSIONS.first
|
61
|
-
warn "NOTE: RubyParser::#{name} undefined, using #{latest}."
|
62
|
-
latest
|
63
|
-
end
|
53
|
+
def self.inherited x
|
54
|
+
RubyParser::VERSIONS << x
|
55
|
+
end
|
64
56
|
|
65
|
-
|
57
|
+
def self.version= v
|
58
|
+
@version = v
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.version
|
62
|
+
@version ||= Parser > self && self.name[/(?:V|Ruby)(\d+)/, 1].to_i
|
63
|
+
end
|
66
64
|
end
|
65
|
+
|
66
|
+
class SyntaxError < RuntimeError; end
|
67
67
|
end
|
68
68
|
|
69
69
|
##
|
70
70
|
# Unfortunately a problem with racc is that it won't let me namespace
|
71
71
|
# properly, so instead of RubyParser::V25, I still have to generate
|
72
|
-
# the old
|
73
|
-
|
74
|
-
require "
|
75
|
-
require "
|
76
|
-
require "
|
77
|
-
require "
|
78
|
-
require "
|
79
|
-
require "
|
80
|
-
require "
|
72
|
+
# the old RubyParser25 and shove it in as V25.
|
73
|
+
|
74
|
+
require "ruby_parser20"
|
75
|
+
require "ruby_parser21"
|
76
|
+
require "ruby_parser22"
|
77
|
+
require "ruby_parser23"
|
78
|
+
require "ruby_parser24"
|
79
|
+
require "ruby_parser25"
|
80
|
+
require "ruby_parser26"
|
81
|
+
require "ruby_parser27"
|
82
|
+
require "ruby_parser30"
|
83
|
+
require "ruby_parser31"
|
84
|
+
require "ruby_parser32"
|
85
|
+
require "ruby_parser33"
|
81
86
|
|
82
87
|
class RubyParser # HACK
|
83
88
|
VERSIONS.clear # also a HACK caused by racc namespace issues
|
84
89
|
|
90
|
+
class V33 < ::Ruby33Parser; end
|
91
|
+
class V32 < ::Ruby32Parser; end
|
92
|
+
class V31 < ::Ruby31Parser; end
|
93
|
+
class V30 < ::Ruby30Parser; end
|
94
|
+
class V27 < ::Ruby27Parser; end
|
85
95
|
class V26 < ::Ruby26Parser; end
|
86
96
|
class V25 < ::Ruby25Parser; end
|
87
97
|
class V24 < ::Ruby24Parser; end
|