ruby_parser 3.0.0 → 3.19.1

Sign up to get free protection for your applications and to get access to all the features.
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