ruby_parser 3.0.0 → 3.19.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.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data/.autotest +36 -19
  4. data/History.rdoc +1297 -0
  5. data/Manifest.txt +35 -7
  6. data/{README.txt → README.rdoc} +44 -14
  7. data/Rakefile +308 -110
  8. data/bin/ruby_parse +3 -1
  9. data/bin/ruby_parse_extract_error +36 -16
  10. data/compare/normalize.rb +218 -0
  11. data/debugging.md +190 -0
  12. data/gauntlet.md +107 -0
  13. data/lib/.document +1 -0
  14. data/lib/rp_extensions.rb +53 -0
  15. data/lib/rp_stringscanner.rb +33 -0
  16. data/lib/ruby20_parser.rb +10973 -0
  17. data/lib/ruby20_parser.y +2683 -0
  18. data/lib/ruby21_parser.rb +10980 -0
  19. data/lib/ruby21_parser.y +2700 -0
  20. data/lib/ruby22_parser.rb +11123 -0
  21. data/lib/ruby22_parser.y +2711 -0
  22. data/lib/ruby23_parser.rb +11132 -0
  23. data/lib/ruby23_parser.y +2713 -0
  24. data/lib/ruby24_parser.rb +11231 -0
  25. data/lib/ruby24_parser.y +2721 -0
  26. data/lib/ruby25_parser.rb +11231 -0
  27. data/lib/ruby25_parser.y +2721 -0
  28. data/lib/ruby26_parser.rb +11253 -0
  29. data/lib/ruby26_parser.y +2736 -0
  30. data/lib/ruby27_parser.rb +12980 -0
  31. data/lib/ruby27_parser.y +3324 -0
  32. data/lib/ruby30_parser.rb +13242 -0
  33. data/lib/ruby30_parser.y +3447 -0
  34. data/lib/ruby31_parser.rb +13622 -0
  35. data/lib/ruby31_parser.y +3481 -0
  36. data/lib/ruby3_parser.yy +3536 -0
  37. data/lib/ruby_lexer.rb +933 -1232
  38. data/lib/ruby_lexer.rex +185 -0
  39. data/lib/ruby_lexer.rex.rb +399 -0
  40. data/lib/ruby_lexer_strings.rb +638 -0
  41. data/lib/ruby_parser.rb +97 -3
  42. data/lib/ruby_parser.yy +3465 -0
  43. data/lib/ruby_parser_extras.rb +1216 -687
  44. data/test/test_ruby_lexer.rb +2249 -1092
  45. data/test/test_ruby_parser.rb +5156 -975
  46. data/test/test_ruby_parser_extras.rb +47 -77
  47. data/tools/munge.rb +250 -0
  48. data/tools/ripper.rb +44 -0
  49. data.tar.gz.sig +1 -1
  50. metadata +200 -155
  51. metadata.gz.sig +0 -0
  52. data/.gemtest +0 -0
  53. data/History.txt +0 -482
  54. data/lib/gauntlet_rubyparser.rb +0 -120
  55. data/lib/ruby18_parser.rb +0 -5747
  56. data/lib/ruby18_parser.y +0 -1873
  57. data/lib/ruby19_parser.rb +0 -6110
  58. data/lib/ruby19_parser.y +0 -2078
data/lib/ruby_parser.rb CHANGED
@@ -1,4 +1,98 @@
1
+ require "ruby_parser_extras"
2
+ require "racc/parser"
1
3
 
2
- require 'ruby18_parser'
3
- require 'ruby19_parser'
4
- require 'ruby_parser_extras'
4
+ ##
5
+ # RubyParser is a compound parser that uses all known versions to
6
+ # attempt to parse.
7
+
8
+ class RubyParser
9
+
10
+ VERSIONS = []
11
+
12
+ attr_accessor :current
13
+
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
23
+
24
+ klass.new
25
+ end
26
+
27
+ def self.latest
28
+ VERSIONS.first.new
29
+ end
30
+
31
+ def process s, f = "(string)", t = 10
32
+ e = nil
33
+ VERSIONS.each do |klass|
34
+ self.current = parser = klass.new
35
+ begin
36
+ return parser.process s, f, t
37
+ rescue Racc::ParseError, RubyParser::SyntaxError => exc
38
+ e ||= exc
39
+ end
40
+ end
41
+ raise e
42
+ end
43
+
44
+ alias :parse :process
45
+
46
+ def reset
47
+ # do nothing
48
+ end
49
+
50
+ class Parser < Racc::Parser
51
+ include RubyParserStuff
52
+
53
+ def self.inherited x
54
+ RubyParser::VERSIONS << x
55
+ end
56
+
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
64
+ end
65
+
66
+ class SyntaxError < RuntimeError; end
67
+ end
68
+
69
+ ##
70
+ # Unfortunately a problem with racc is that it won't let me namespace
71
+ # properly, so instead of RubyParser::V25, I still have to generate
72
+ # the old Ruby25Parser and shove it in as V25.
73
+
74
+ require "ruby20_parser"
75
+ require "ruby21_parser"
76
+ require "ruby22_parser"
77
+ require "ruby23_parser"
78
+ require "ruby24_parser"
79
+ require "ruby25_parser"
80
+ require "ruby26_parser"
81
+ require "ruby27_parser"
82
+ require "ruby30_parser"
83
+ require "ruby31_parser"
84
+
85
+ class RubyParser # HACK
86
+ VERSIONS.clear # also a HACK caused by racc namespace issues
87
+
88
+ class V31 < ::Ruby31Parser; end
89
+ class V30 < ::Ruby30Parser; end
90
+ class V27 < ::Ruby27Parser; end
91
+ class V26 < ::Ruby26Parser; end
92
+ class V25 < ::Ruby25Parser; end
93
+ class V24 < ::Ruby24Parser; end
94
+ class V23 < ::Ruby23Parser; end
95
+ class V22 < ::Ruby22Parser; end
96
+ class V21 < ::Ruby21Parser; end
97
+ class V20 < ::Ruby20Parser; end
98
+ end