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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.autotest +18 -29
  4. data/History.rdoc +283 -0
  5. data/Manifest.txt +12 -4
  6. data/README.rdoc +4 -3
  7. data/Rakefile +189 -51
  8. data/bin/ruby_parse +3 -1
  9. data/bin/ruby_parse_extract_error +19 -36
  10. data/compare/normalize.rb +76 -4
  11. data/debugging.md +190 -0
  12. data/gauntlet.md +106 -0
  13. data/lib/rp_extensions.rb +14 -42
  14. data/lib/rp_stringscanner.rb +20 -51
  15. data/lib/ruby20_parser.rb +4659 -4218
  16. data/lib/ruby20_parser.y +953 -602
  17. data/lib/ruby21_parser.rb +4723 -4308
  18. data/lib/ruby21_parser.y +956 -605
  19. data/lib/ruby22_parser.rb +4762 -4337
  20. data/lib/ruby22_parser.y +960 -612
  21. data/lib/ruby23_parser.rb +4761 -4342
  22. data/lib/ruby23_parser.y +961 -613
  23. data/lib/ruby24_parser.rb +4791 -4341
  24. data/lib/ruby24_parser.y +968 -612
  25. data/lib/ruby25_parser.rb +4791 -4341
  26. data/lib/ruby25_parser.y +968 -612
  27. data/lib/ruby26_parser.rb +7287 -0
  28. data/lib/ruby26_parser.y +2749 -0
  29. data/lib/ruby27_parser.rb +8517 -0
  30. data/lib/ruby27_parser.y +3346 -0
  31. data/lib/ruby30_parser.rb +8751 -0
  32. data/lib/ruby30_parser.y +3472 -0
  33. data/lib/ruby3_parser.yy +3476 -0
  34. data/lib/ruby_lexer.rb +611 -826
  35. data/lib/ruby_lexer.rex +48 -40
  36. data/lib/ruby_lexer.rex.rb +122 -46
  37. data/lib/ruby_lexer_strings.rb +638 -0
  38. data/lib/ruby_parser.rb +38 -34
  39. data/lib/ruby_parser.yy +1710 -704
  40. data/lib/ruby_parser_extras.rb +987 -553
  41. data/test/test_ruby_lexer.rb +1718 -1539
  42. data/test/test_ruby_parser.rb +3957 -2164
  43. data/test/test_ruby_parser_extras.rb +39 -4
  44. data/tools/munge.rb +250 -0
  45. data/tools/ripper.rb +44 -0
  46. data.tar.gz.sig +0 -0
  47. metadata +68 -47
  48. metadata.gz.sig +0 -0
  49. data/lib/ruby18_parser.rb +0 -5793
  50. data/lib/ruby18_parser.y +0 -1908
  51. data/lib/ruby19_parser.rb +0 -6185
  52. 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 do
19
+ out, err = capture_io {
20
20
  s = p.handle_encoding str
21
- end
21
+ }
22
22
 
23
- assert_equal orig_str.sub(/\357\273\277/, ''), s
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 ! t
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.12.0
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
- MIIDPjCCAiagAwIBAgIBAjANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
13
+ MIIDPjCCAiagAwIBAgIBBTANBgkqhkiG9w0BAQsFADBFMRMwEQYDVQQDDApyeWFu
14
14
  ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
15
- GRYDY29tMB4XDTE3MTEyMTIxMTExMFoXDTE4MTEyMTIxMTExMFowRTETMBEGA1UE
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/hMA0GCSqGSIb3DQEBBQUAA4IB
25
- AQAfAXSQpsW7YSxd1csRtA/M4Zt0AMXFMd76GJ8Lgtg8G0+VFbdChRyDuDb0kPlW
26
- h9QQX/YABfCW8vxmssbMGrP+VGBAn7BbdTcfTlgCWrvMX1uL5aRL74nA4urKXqdW
27
- a0nP70K4958P3GffBdtE3KGkU5xstFnXGajxuBRnL66E15KU0BNehVxdG258bdPu
28
- EKN6MqBPftFiev3tuwqDV11r2GquDpniYcT+Mi8/PgeAgVT/afBeVgbB3KaZeTRR
29
- AhXhF6Wi2GTMezlj5jlI5XV7WsJUSwTp/YiVvcmT74ZaCRvexm6EnNhkrvJJ1Xeu
30
- V+HB+LYYhXWitInO/eXxDrFB
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: 2018-12-04 00:00:00.000000000 Z
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.9'
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.9'
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: '11'
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: '11'
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.5'
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: '2.5'
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.17'
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.17'
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). RP's output is
127
- the same as ParseTree's output: s-expressions using ruby's arrays and
128
- base types.
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
- post_install_message:
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: '0'
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
- rubyforge_project:
220
- rubygems_version: 2.7.3
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