parser 0.9.alpha
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.autotest +50 -0
- data/.gemtest +0 -0
- data/History.txt +558 -0
- data/Manifest.txt +18 -0
- data/README.txt +87 -0
- data/Rakefile +192 -0
- data/bin/ruby_parse +96 -0
- data/bin/ruby_parse_extract_error +130 -0
- data/lib/gauntlet_rubyparser.rb +117 -0
- data/lib/ruby18_parser.rb +5706 -0
- data/lib/ruby18_parser.y +1846 -0
- data/lib/ruby19_parser.rb +6054 -0
- data/lib/ruby19_parser.y +2035 -0
- data/lib/ruby_lexer.rb +6789 -0
- data/lib/ruby_parser.rb +4 -0
- data/lib/ruby_parser_extras.rb +1148 -0
- data/test/test_ruby_lexer.rb +2028 -0
- data/test/test_ruby_parser.rb +1772 -0
- data/test/test_ruby_parser_extras.rb +228 -0
- metadata +163 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ac470264d9dbf4e1781557f2e4c6f93050ca1fca
|
4
|
+
data.tar.gz: 2af0ef8f8dee1d84f91305adbbd6f099f99b5c8f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: cceb3bc547346c33f28c9392971b0d6df75c289c3e5046bebac559bdf3a7334c902efae7d2c02e294d40930589ff27db011ab95afb72ff0f9f82af6851db2e0c
|
7
|
+
data.tar.gz: 0121d2b3fea37bac9b97db352c1cc55469cfa0ca854f0f913f0d8cb9015740e6799d9180a2a29c6a9715285e8acbc50d5717fafd8759de3966af222fd963a3b4
|
data/.autotest
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
|
3
|
+
require 'autotest/restart'
|
4
|
+
require 'autotest/isolate'
|
5
|
+
require 'autotest/rcov' if ENV['RCOV']
|
6
|
+
|
7
|
+
Autotest.add_hook :initialize do |at|
|
8
|
+
at.extra_files << "../../sexp_processor/dev/lib/pt_testcase.rb"
|
9
|
+
at.libs << ":../../sexp_processor/dev/lib"
|
10
|
+
at.add_exception 'unit'
|
11
|
+
at.add_exception 'coverage'
|
12
|
+
at.add_exception 'coverage.info'
|
13
|
+
at.add_exception '.diff'
|
14
|
+
at.add_exception 'rubycorpus'
|
15
|
+
|
16
|
+
dirs = Dir["corpus*"] + Dir["gauntlet*"]
|
17
|
+
|
18
|
+
dirs.each do |f|
|
19
|
+
at.add_exception f
|
20
|
+
end
|
21
|
+
|
22
|
+
at.libs << ':../../minitest/dev/lib'
|
23
|
+
at.testlib = "minitest/autorun"
|
24
|
+
|
25
|
+
at.add_mapping(/^lib\/.*\.y$/) do |f, _|
|
26
|
+
at.files_matching %r%^test/.*#{File.basename(f, '.y').gsub '_', '_?'}.rb$%
|
27
|
+
end
|
28
|
+
|
29
|
+
at.add_mapping(/pt_testcase.rb/) do |f, _|
|
30
|
+
at.files_matching(/test_.*rb$/)
|
31
|
+
end
|
32
|
+
|
33
|
+
%w(TestEnvironment TestStackState).each do |klass|
|
34
|
+
at.extra_class_map[klass] = "test/test_ruby_parser_extras.rb"
|
35
|
+
end
|
36
|
+
|
37
|
+
%w(TestRuby18Parser TestRuby19Parser TestParseTree).each do |klass| # HACK
|
38
|
+
at.extra_class_map[klass] = "test/test_ruby_parser.rb"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
Autotest.add_hook :run_command do |at, _|
|
43
|
+
system "rake parser DEBUG=1"
|
44
|
+
end
|
45
|
+
|
46
|
+
class Autotest
|
47
|
+
def ruby
|
48
|
+
File.expand_path "~/.multiruby/install/1.9.0-0/bin/ruby"
|
49
|
+
end
|
50
|
+
end if ENV['ONENINE']
|
data/.gemtest
ADDED
File without changes
|
data/History.txt
ADDED
@@ -0,0 +1,558 @@
|
|
1
|
+
=== 3.1.2 / 2013-03-18
|
2
|
+
|
3
|
+
* 1 minor enhancement:
|
4
|
+
|
5
|
+
* OMG A SECURITY ISSUE FOR CODE NOBODY USES... EVER
|
6
|
+
|
7
|
+
=== 3.1.1 / 2012-12-19
|
8
|
+
|
9
|
+
* 1 minor enhancement:
|
10
|
+
|
11
|
+
* Added MOVE_TIMEOUT env var for ruby_parse_extract_error to move slow files to a sibling directory
|
12
|
+
|
13
|
+
* 4 bug fixes:
|
14
|
+
|
15
|
+
* 1.9: Fixed lexing of "0o". (whitequark)
|
16
|
+
* 1.9: Fixed parsing of unary plus on literals. (whitequark)
|
17
|
+
* Added timeout arg to RubyParser#process to pass through to the real parser
|
18
|
+
* Updated Synopsis to reflect new options for running RP. (louismullie)
|
19
|
+
|
20
|
+
=== 3.1.0 / 2012-12-06
|
21
|
+
|
22
|
+
* 2 minor enhancements:
|
23
|
+
|
24
|
+
* Added RubyParser.for_current_ruby to provide a parser that matches your runtime. (neilconway)
|
25
|
+
* Duck-typed IDENT_CHAR_RE instead of using RUBY_VERSION
|
26
|
+
|
27
|
+
* 3 bug fixes:
|
28
|
+
|
29
|
+
* Cleared out body comments in class/module/defn/defs
|
30
|
+
* Flipped lexer tests to US-ASCII to avoid encoding hell
|
31
|
+
* yyerror is now an alias for syntax_error
|
32
|
+
|
33
|
+
=== 3.0.4 / 2012-11-26
|
34
|
+
|
35
|
+
* 1 bug fix:
|
36
|
+
|
37
|
+
* RPStringScanner#lineno was still using byte offset, not char offset. (brynary)
|
38
|
+
|
39
|
+
=== 3.0.3 / 2012-11-23
|
40
|
+
|
41
|
+
* 1 minor enhancement:
|
42
|
+
|
43
|
+
* Improved error output on invalid char in expression.
|
44
|
+
|
45
|
+
* 1 bug fix:
|
46
|
+
|
47
|
+
* Fixed lexing of no-name ivars. (whitequark)
|
48
|
+
|
49
|
+
=== 3.0.2 / 2012-11-21
|
50
|
+
|
51
|
+
52 down makes 99.9767% or 3.7σ. 130 files failed to parse out of 558k.
|
52
|
+
|
53
|
+
* 4 minor enhancements:
|
54
|
+
|
55
|
+
* Added RP_TIMEOUT env var to override default timeout of 10 seconds.
|
56
|
+
* Minor optimization to RubyLexer#parse_number
|
57
|
+
* Only output parseerror output to stderr if $DEBUG.
|
58
|
+
* ruby_parse_extract_error modified to include 'it' blocks in its search.
|
59
|
+
|
60
|
+
* 7 bug fixes:
|
61
|
+
|
62
|
+
* 1.9: Fixed args in dot-call forms (eg f.(...)).
|
63
|
+
* 1.9: Fixed lexing stabby lambda w/ do/end
|
64
|
+
* Deal better with DOS files. Ugh.
|
65
|
+
* Fix line number of production after heredoc.
|
66
|
+
* Fixed RubyParser#process to reuse parser instances across calls.
|
67
|
+
* Fixed line numbers for several productions.
|
68
|
+
* new_call sets line number to smallest line number of members.
|
69
|
+
|
70
|
+
=== 3.0.1 / 2012-11-02
|
71
|
+
|
72
|
+
* 2 bug fixes -- both based on MRI bugs... Yay?:
|
73
|
+
|
74
|
+
* 1.9.2 doesn't have String#byteslice... so I have to do the *HORRIBLE*.
|
75
|
+
* Lexing regexps w/ bad character encodings and no declared options will fall back to /.../n.
|
76
|
+
|
77
|
+
=== 3.0.0 / 2012-11-02
|
78
|
+
|
79
|
+
I've hit 99.967% success rate against 558k files! 3.6σ!! 182 files
|
80
|
+
failed to parse and spot checking them shows that they're pretty much
|
81
|
+
lost causes. I'm sure I missed some stuff, but it is more important at
|
82
|
+
this point to release a version to get more people using it in more
|
83
|
+
diverse ways than I can come up with.
|
84
|
+
|
85
|
+
* 3 minor enhancements:
|
86
|
+
|
87
|
+
* Added RBStringScanner#charpos using #string_to_pos.
|
88
|
+
* Added RBStringScanner#string_to_pos using String#byteslice.
|
89
|
+
* Optimized regexp used for escape chars in strings. (presidentbeef)
|
90
|
+
|
91
|
+
* 3 bug fixes:
|
92
|
+
|
93
|
+
* Fixed current_line and unread_many depending on StringScanner#pos
|
94
|
+
* Fixed parsing of 'a[] = b'
|
95
|
+
* Fixed the worst abuse of heredocs EVER. Just because it is valid doesn't mean you should.
|
96
|
+
|
97
|
+
=== 3.0.0.a10 / 2012-10-26
|
98
|
+
|
99
|
+
* 1 major enhancement:
|
100
|
+
|
101
|
+
* iter nodes are now structurally the same as defs. Block args are COMPLETELY different.
|
102
|
+
|
103
|
+
* 4 minor enhancements:
|
104
|
+
|
105
|
+
* 1.8 and 1.9 now treat f { |(...)| } differently, per MRI.
|
106
|
+
* 1.9: Added __ENCODING__ support. (witlessbird)
|
107
|
+
* 1.9: Finished coverage for masgn variants in block args
|
108
|
+
* 1.9: covered all forms of block args: optional, splat, block, and destructuring
|
109
|
+
|
110
|
+
=== 3.0.0.a9 / 2012-10-22
|
111
|
+
|
112
|
+
Holy crap! I've hit a 99.92% success rate against 558k files! 492
|
113
|
+
failed parses to go. NOW is the time to start testing ruby_parser
|
114
|
+
against your code!
|
115
|
+
|
116
|
+
* 16 minor enhancements:
|
117
|
+
|
118
|
+
* 1.9 parser: Finished magic encoding and utf-8 bom support.
|
119
|
+
* 1.9: Added leading dot support eg "a\n.b".
|
120
|
+
* 1.9: Added partial handling for *arg and opt=val args in block args.
|
121
|
+
* 1.9: OMFG Encoding is the worst thing ever. Overhauled encoding support once again. It is much better at doing last ditch guessing of the encoding of the source file.
|
122
|
+
* 1.9: added String#grep for legacy support.
|
123
|
+
* Added Sexp#block_pass?
|
124
|
+
* Added ability to delete slow files when they timeout.
|
125
|
+
* Added block_dup_check and refactored grammar code to use it for block arg handling.
|
126
|
+
* Added in_lex_state?(*states) to clean up lexer code.
|
127
|
+
* Added tentative support for optional block args. THIS IS SUBJECT TO CHANGE!!
|
128
|
+
* Added toggleable debugging to StackState to make my life easier
|
129
|
+
* All untested uses have not moved but have been laced with poison.
|
130
|
+
* Finally got good tests for most forms of double-block arg errors.
|
131
|
+
* Moved all _known_ uses of SyntaxError to RubyParser::SyntaxError
|
132
|
+
* f_block_optarg now always returns a block node.
|
133
|
+
* ruby_parse_extract_error uses Find.find instead of globbing so dot files aren't missed.
|
134
|
+
|
135
|
+
* 12 bug fixes:
|
136
|
+
|
137
|
+
* 1.9: Completely ignore IndexError in unread_many because... you know... it sucks.
|
138
|
+
* 1.9: Fixed lex state after lexing ? in trinary.
|
139
|
+
* 1.9: Fixed lex state in some ternarys.
|
140
|
+
* 1.9: Fixed parsing of "1 ? b('') : 2\na d: 3"... ARE YOU NOT GLAD?!?!
|
141
|
+
* Fix Timeout differences between 1.8 and 1.9 :(
|
142
|
+
* Fixed emacs-style encodings to deal with no whitespace.
|
143
|
+
* Fixed error message for bad % codes. (whitequark)
|
144
|
+
* Fixed lexing of :a==>b vs :a===b vs :a==>b. P.S. Your space bar is broken. chump.
|
145
|
+
* Fixed lexing of rare numeric formats.
|
146
|
+
* Fixed magic comment encodings on DOS files ... :/
|
147
|
+
* Fixed ruby_parse_extract_error to exit non-zero on errors.
|
148
|
+
* Removed Symbol#is_argument and switch usage to is_arg?
|
149
|
+
|
150
|
+
=== 3.0.0.a8 / 2012-09-26
|
151
|
+
|
152
|
+
* 1 bug fix:
|
153
|
+
|
154
|
+
* Remove method #d from global namespace. (alexch)
|
155
|
+
|
156
|
+
=== 3.0.0.a7 / 2012-09-21
|
157
|
+
|
158
|
+
* 3 minor enhancements:
|
159
|
+
|
160
|
+
* Reorganized ruby_parse_extract_error so it will start much faster with a bunch of glob directories
|
161
|
+
* RubyParserStuff#process takes optional time arg and raises Timeout::Error if it goes too long. You should rescue that, ya know...
|
162
|
+
* ruby_parse_extract_error now checks *.rake and Rakefile on dir scan.
|
163
|
+
|
164
|
+
* 3 bug fixes:
|
165
|
+
|
166
|
+
* 1.9: Fixed ternary state tracking so {a:f{f()},b:nil} won't trip up the lexer.
|
167
|
+
* Fixed optional values in block args (no20/no21)
|
168
|
+
* ruby_parse_extract_error skips non-files. Some asshats put .rb on their dirs. :(
|
169
|
+
|
170
|
+
=== 3.0.0.a6 / 2012-08-20
|
171
|
+
|
172
|
+
* 2 minor enhancements:
|
173
|
+
|
174
|
+
* 1.8: Added basic encoding support to 1.8 parser. Assumes -Ku.
|
175
|
+
* 1.9: Added encoding magic comment support to 1.9 parser.
|
176
|
+
|
177
|
+
* 8 bug fixes:
|
178
|
+
|
179
|
+
* 1.9: Fixed lexing of -1 w/in conditionals. yeah... I dunno.
|
180
|
+
* 1.9: Fixed parsing of a do | | end.
|
181
|
+
* 1.9: Fixed parsing of not(x).
|
182
|
+
* 1.9: Fixed parsing of op_asgn + rescue: 'a ||= b rescue nil'
|
183
|
+
* 1.9: added \r to the EOL backslash handler. dos files blow
|
184
|
+
* 1.9: hacked in a workaround for 1.9 specific regexps running in 1.8.
|
185
|
+
* Added #reset to RubyParser proxy class
|
186
|
+
* Fixed lexing of conditional w/ %() tokens
|
187
|
+
|
188
|
+
=== 3.0.0.a5 / 2012-07-31
|
189
|
+
|
190
|
+
* 5 bug fixes:
|
191
|
+
|
192
|
+
* 1.9: Fix construction of 'f(:x, y: nil,)' w/ trailing comma.
|
193
|
+
* 1.9: cleaned up lexing exit lex_state handling. Fixes bug parsing 'if f :x; end'
|
194
|
+
* 1.9: fixed building of right-leaning masgns: 'f { |a, (b, c)| }'
|
195
|
+
* 1.9: fixed lexing 'when *splat'
|
196
|
+
* 1.9: fixed lexing of regexps in whens
|
197
|
+
|
198
|
+
=== 3.0.0.a4 / 2012-07-26
|
199
|
+
|
200
|
+
* 10 minor enhancements:
|
201
|
+
|
202
|
+
* 'rake debug' defaults to 1.9 parser since that's all I'm doing these days
|
203
|
+
* 1.9: Fixed f { |(a, b, ...), ...| ... } handling.
|
204
|
+
* Added 'rake extract F=path' task to quickly extract errors from large files
|
205
|
+
* Added on_error handler to provide more readable error message.
|
206
|
+
* Aliased #process to #parse.
|
207
|
+
* Renamed #parse to #process (legacy name), added default path of '(string)'
|
208
|
+
* cleaned ruby_parse_extract_error output and fixed to 1.9 parser
|
209
|
+
* ruby_parse_extract_error expands shell globs from ARGV
|
210
|
+
* ruby_parse_extract_error should also capture RuntimeError
|
211
|
+
* yyerror(msg) now warns with the message instead of ignoring it.
|
212
|
+
|
213
|
+
* 3 bug fixes:
|
214
|
+
|
215
|
+
* 1.9: Fixed bug lexing/parsing [ in rhs.
|
216
|
+
* 1.9: Fixed f { |((a, b), c)| ... } handling
|
217
|
+
* 1.9: fixed newline handling during expr_value
|
218
|
+
|
219
|
+
=== 3.0.0.a3 / 2012-07-03
|
220
|
+
|
221
|
+
* 1 major enhancement:
|
222
|
+
|
223
|
+
* OMG! Implemented all the 1.9 arg crap and I went from 500 lines of
|
224
|
+
structural diff to 32!
|
225
|
+
|
226
|
+
* 17 minor enhancements:
|
227
|
+
|
228
|
+
* 1.9: !(...) is now a method call. ugh
|
229
|
+
* 1.9: Added __ENCODING__ keyword (returns Unsupported atm).
|
230
|
+
* 1.9: Added support for "a.()" thingy. whatever you call it. Have I ever mentioned that ruby has too much syntax? I mean really...
|
231
|
+
* 1.9: Moved kRETURN/kBREAK/kNEXT from command_call to command
|
232
|
+
* 1.9: Removed when_args and refactored into args production.
|
233
|
+
* 1.9: Support for not/! being a call to #!. why matz? why?!?
|
234
|
+
* 1.9: Support for trailing comma support in opt call args.
|
235
|
+
* 1.9: Switched keyword support to deal with 1.8 vs 1.9 differences.
|
236
|
+
* 1.9: refactored and created command_asgn
|
237
|
+
* 1.9: removed case/else from primary
|
238
|
+
* 1.9: reworked mlhs and family. Now horrible things like 'a, *, c = f' work
|
239
|
+
* 1.9: reworked top level rules from program to expr. Lots of lame refactorings in mri.
|
240
|
+
* Moved 'a[]' from primary down to method_call
|
241
|
+
* Removed 'args trailer' production from assoc_list (eg {1, 2}).
|
242
|
+
* Removed 1.9 support for : as a terminator in do/then
|
243
|
+
* RubyParser no longer subclasses the 18 parser, so I had to change some consts around.
|
244
|
+
* Undeprecated RubyParser - but now it is a compound parser that tries 1.9 first.
|
245
|
+
|
246
|
+
* 3 bug fixes:
|
247
|
+
|
248
|
+
* 1.9: fixed bang method name.
|
249
|
+
* Fixed case/when/splat handling on both 1.8 and 1.9.
|
250
|
+
* Removed lambda_body production from lambda
|
251
|
+
|
252
|
+
=== 3.0.0.a2 / 2012-06-19
|
253
|
+
|
254
|
+
* 1 minor enhancement:
|
255
|
+
|
256
|
+
* Updated to sexp_processor ~> 4.0
|
257
|
+
|
258
|
+
* 1 bug fix:
|
259
|
+
|
260
|
+
* Fixed new_module to remove scope/block. Not enough tests on module variance.
|
261
|
+
|
262
|
+
* 1 known issue:
|
263
|
+
|
264
|
+
* No parsing of "a.()" thingy. (reported by julian7) (patches welcome!)
|
265
|
+
|
266
|
+
=== 3.0.0.a1 / 2012-05-22
|
267
|
+
|
268
|
+
This is the first alpha release of the 3.0.0 series. It is probably
|
269
|
+
woefully incomplete, bug ridden, and hasn't showered in several days.
|
270
|
+
Please please please beat the crap out of it and send
|
271
|
+
bugs/patches/complaints/suggestions.
|
272
|
+
|
273
|
+
* 5 major enhancements:
|
274
|
+
|
275
|
+
* 1.9 parsing! Thanks to EVERYONE for submitting patches for this!
|
276
|
+
* Removed :arglist from everything but :op_asgn1
|
277
|
+
* Removed :block from resbody
|
278
|
+
* Removed :block from when
|
279
|
+
* Removed :block nodes inside of scope nodes (defn/defs/class/sclass).
|
280
|
+
* Removed :scope nodes in defn/defs/class/sclass nodes.
|
281
|
+
* (probably more sexp cleanup to come before 3.0.0 final)
|
282
|
+
|
283
|
+
* 25 minor enhancements:
|
284
|
+
|
285
|
+
* 1.9: Fix \!a. (wanabe)
|
286
|
+
* 1.9: Method calling with postargs. (wanabe)
|
287
|
+
* 1.9: Method definition with postargs. (wanabe)
|
288
|
+
* 1.9: Support lambda args without parentheses. (wanabe)
|
289
|
+
* Added R arg to `rake debug` to debug ruby straight up
|
290
|
+
* Added RubyParser, subclassing Ruby18Parser but warning on instantiation.
|
291
|
+
* Added backref_assign_error (needs tests)
|
292
|
+
* Added bin/ruby_parse_extract_error to help with error submissions
|
293
|
+
* Added debug task to help quickly get into a bug
|
294
|
+
* Added more 18 vs 19 lexing tests for ?c.
|
295
|
+
* Added ruby_parser.rb that pulls everything together in proper order.
|
296
|
+
* Added tLABEL. (brynary)
|
297
|
+
* Branched ruby_parser.y to ruby18_parser.y
|
298
|
+
* Fix to pass test_lambda_args_block__19 test. (mrmargolis)
|
299
|
+
* Got rid of one instance of unread_many. (Confusion)
|
300
|
+
* Moved everything from RubyParser to RubyParserStuff and included module in both.
|
301
|
+
* Refactored 1.9 args handling
|
302
|
+
* Refactored and added new_resbody to ruby_parser_extras.
|
303
|
+
* Refactored and added new_when
|
304
|
+
* Refactored tests infrastructure and added both 1.8 and 1.9 test branches.
|
305
|
+
* Removed unused methods: unread, begin_of_line? was_begin_of_line. (YAY!) (Confusion)
|
306
|
+
* Renamed ruby_parser.y to ruby19_parser.y
|
307
|
+
* RubyLexer now takes a version specifier.
|
308
|
+
* Started doing comparative refactoring between MRI's 1.9 parser and RP's. Shouldn't differ functionally except where we missed stuff in RP.
|
309
|
+
* `rake debug` prints the output if it succeeds.
|
310
|
+
|
311
|
+
* 21 bug fixes:
|
312
|
+
|
313
|
+
* Added missing gvar arg error. (1.8)
|
314
|
+
* Attach parser files to isolate to ensure they can build
|
315
|
+
* Conditionalize handling of tLABEL to ruby19+. Fixes issue #33.
|
316
|
+
* DOH. I deactivated some tests and never reactivated them. (Confusion ftw)
|
317
|
+
* Duplicate the input so that heredoc processing doesn't morph original. (banister)
|
318
|
+
* Entirely reworked block arg handling. (1.8)
|
319
|
+
* Fix ?x char literal. (nobu)
|
320
|
+
* Fixed 4/5 of literal lambda tests (jamie)
|
321
|
+
* Fixed deps for parser
|
322
|
+
* Fixed lexing of ?c for ruby 1.8 and 1.9.
|
323
|
+
* Fixed more Ruby 1.9 args tests (brynary)
|
324
|
+
* Fixed reswords to match MRI (1.8, 1.9)
|
325
|
+
* Fixed symbols with no spaces in method calls (e.g. foo:bar) (YAY! brynary)
|
326
|
+
* Fixed ternary_nil_no_space and other ternary edge cases for 1.9. (lastobelus)
|
327
|
+
* Fixed test_call_not_equal__19. First bug bounty! (albus522)
|
328
|
+
* Made lambda w/o arg list zero out the arg slot.
|
329
|
+
* Renamed awords to qwords to match stupid MRI naming. (1.8, 1.9) :(
|
330
|
+
* Rolled out brynary's symbols-no-spaces (foo:bar) changes when parsing 1.8 code
|
331
|
+
* Split 1.8 from 1.9 open paren lexer. Gawd that's ugly code.
|
332
|
+
* Split block_var from for_var. (1.8, 1.9)
|
333
|
+
* Use binread (and emulate in ruby 1.8) to avoid encoding issues
|
334
|
+
|
335
|
+
=== 2.3.1 / 2011-09-21
|
336
|
+
|
337
|
+
* 2 bug fixes:
|
338
|
+
|
339
|
+
* Fixed line numbers at end of special var+whitespace (larsch)
|
340
|
+
* Holy crap I was smokin' something good... Fixed 1.9.3 warning
|
341
|
+
|
342
|
+
=== 2.3.0 / 2011-09-06
|
343
|
+
|
344
|
+
* 2 minor enhancements:
|
345
|
+
|
346
|
+
* Add -g flag to parser compile if DEBUG
|
347
|
+
* Lexer now embeds line number in yacc_value for keywords, helping fix up line numbers
|
348
|
+
|
349
|
+
* 3 bug fixes:
|
350
|
+
|
351
|
+
* Fix method line numbers when no args and no parens (quix)
|
352
|
+
* Fixed line numbers on return/break/next w/ result expr. (pjnz)
|
353
|
+
* Fixed some lexing state in order to parse: 'f (1), 2' as 'f(1, 2)'. (invernizzi)
|
354
|
+
|
355
|
+
=== 2.2.0 / 2011-08-23
|
356
|
+
|
357
|
+
* 2 minor enhancements:
|
358
|
+
|
359
|
+
* Moved Keyword, Environment, and StackState inside of RubyParser
|
360
|
+
* Added proper dsym and dsym->sym support.
|
361
|
+
|
362
|
+
* 3 bug fixes:
|
363
|
+
|
364
|
+
* Added extra (failing) tests for call/iter line number checking (quix)
|
365
|
+
* Fixed line numbers for certain call/iter edge cases
|
366
|
+
* Fixed parsing of: alias :"<<" :">>".
|
367
|
+
|
368
|
+
=== 2.1.0 / 2011-08-15
|
369
|
+
|
370
|
+
* 2 minor enhancements:
|
371
|
+
|
372
|
+
* Added new accessor canonicalize_conditions to toggle conditional canonicalization (on by default). (confused)
|
373
|
+
* Awesome cleanup: Replaced call to append_block by block_append. (Confusion)
|
374
|
+
|
375
|
+
* 2 bug fixes:
|
376
|
+
|
377
|
+
* Fixed handling last line of =begin/=end. (raybaxter)
|
378
|
+
* Fixed source line numbers after heredocs. (jbarreneche)
|
379
|
+
|
380
|
+
=== 2.0.6 / 2011-02-18
|
381
|
+
|
382
|
+
* 1 minor enhancement:
|
383
|
+
|
384
|
+
* Switched to hoe's racc plugin to clean up rakefile and builds
|
385
|
+
|
386
|
+
* 1 bug fix:
|
387
|
+
|
388
|
+
* Fixed empty =begin/end.
|
389
|
+
|
390
|
+
=== 2.0.5 / 2010-09-01
|
391
|
+
|
392
|
+
* 1 minor enhancement:
|
393
|
+
|
394
|
+
* Started merging like lexical cases to try to squeeze some optimization out
|
395
|
+
|
396
|
+
=== 2.0.4 / 2009-08-18
|
397
|
+
|
398
|
+
* 1 minor enhancement:
|
399
|
+
|
400
|
+
* Changed requires around to be more accurate.
|
401
|
+
|
402
|
+
* 4 bug fixes:
|
403
|
+
|
404
|
+
* Fixed .autotest for minitest
|
405
|
+
* Fixed emacs escape lexing bug: "\C-\\" (maglev/gemstone)
|
406
|
+
* Fixed octal lexing edgecases. (maglev/gemstone)
|
407
|
+
* Fixed regexp lexing edgecases. (maglev/gemstone)
|
408
|
+
|
409
|
+
=== 2.0.3 / 2009-06-23
|
410
|
+
|
411
|
+
* 4 minor enhancements:
|
412
|
+
|
413
|
+
* Removed dead code handling d/regex match node cruft.
|
414
|
+
* Switched to minitest
|
415
|
+
* Updated .autotest and rakefile wrt rcov for new hoe capabilities
|
416
|
+
* Updated hoe for new capabilities
|
417
|
+
|
418
|
+
* 4 bug fixes:
|
419
|
+
|
420
|
+
* Environment#all now deals with strange edge cases in RAD.
|
421
|
+
* Fixed packaging/compilation issue.
|
422
|
+
* Minor 1.9 fixes
|
423
|
+
* hoe -> flay -> rubyparser rakefile circularity fixed
|
424
|
+
|
425
|
+
=== 2.0.2 / 2009-01-20
|
426
|
+
|
427
|
+
* 2 minor enhancements:
|
428
|
+
|
429
|
+
* Added gauntlet_rubyparser plugin. YAY for easy massive bug-hunting.
|
430
|
+
* Promoted Sexp's file/line/comments to sexp_processor.
|
431
|
+
|
432
|
+
* 4 bug fixes:
|
433
|
+
|
434
|
+
* Fixed and improved the readme
|
435
|
+
* Fixed lexing heredoc newlines.
|
436
|
+
* Fixed line numbers on defns.
|
437
|
+
* Fixed rdoc generation bug pointed out by hugh sasse (who rocks)
|
438
|
+
|
439
|
+
=== 2.0.1 / 2008-11-04
|
440
|
+
|
441
|
+
* 2 minor enhancements:
|
442
|
+
|
443
|
+
* Updated for changes to splat node in many contexts.
|
444
|
+
* Made PT a developer dep
|
445
|
+
|
446
|
+
=== 2.0.0 / 2008-10-22
|
447
|
+
|
448
|
+
* 1 major enhancement
|
449
|
+
|
450
|
+
* Brought on the AWESOME! 4x faster! no known lexing/parsing bugs!
|
451
|
+
|
452
|
+
* 71 minor enhancements
|
453
|
+
|
454
|
+
* 1.9: Added Fixnum#ord.
|
455
|
+
* 1.9: Added missing Regexp constants and did it so it'd work on 1.9.
|
456
|
+
* Added #store_comment and #comments
|
457
|
+
* Added StringScanner #begin_of_line?
|
458
|
+
* Added a bunch of tests for regexp escape chars, #parse_string, #read_escape, ? numbers, ? whitespace.
|
459
|
+
* Added a hack for rubinius' r2l eval bug.
|
460
|
+
* Added a new token type tSTRING that bypasses tSTRING_BEG/END entirely. Only does non-interpolated strings and then falls back to the old way. MUCH cleaner tho.
|
461
|
+
* Added bin/ruby_parse
|
462
|
+
* Added compare rule to Rakefile.
|
463
|
+
* Added coverage files/dirs to clean rule.
|
464
|
+
* Added file and line numbers to all sexp nodes. Column/ranges to come.
|
465
|
+
* Added lex_state change for lvars at the end of yylex.
|
466
|
+
* Added lexed comments to defn/defs/class/module nodes.
|
467
|
+
* Added stats gathering for yylex. Reordered yylex for avg data
|
468
|
+
* Added tSYMBOL token type and parser rule to speed up symbol lexing.
|
469
|
+
* Added tally output for getch, unread, and unread_many.
|
470
|
+
* Added tests for ambigous uminus/uplus, backtick in cmdarg, square and curly brackets, numeric gvars, eos edge cases, string quoting %<> and %%%.
|
471
|
+
* All cases throughout yylex now return directly if they match, no passthroughs.
|
472
|
+
* All lexer cases now slurp entire token in one swoop.
|
473
|
+
* All zarrays are now just empty arrays.
|
474
|
+
* Changed s(:block_arg, :blah) to :"&blah" in args sexp.
|
475
|
+
* Cleaned up lexer error handling. Now just raises all over.
|
476
|
+
* Cleaned up read_escape and regx_options
|
477
|
+
* Cleaned up tokadd_string (for some definition of cleaned).
|
478
|
+
* Converted single quoted strings to new tSTRING token type.
|
479
|
+
* Coverage is currently 94.4% on lexer.
|
480
|
+
* Done what I can to clean up heredoc lexing... still sucks.
|
481
|
+
* Flattened resbodies in rescue node. Fixed .autotest file.
|
482
|
+
* Folded lex_keywords back in now that it screams.
|
483
|
+
* Found very last instanceof ILiteralNode in the code. haha!
|
484
|
+
* Got the tests subclassing PTTC and cleaned up a lot. YAY
|
485
|
+
* Handle yield(*ary) properly
|
486
|
+
* MASSIVELY cleaned out =begin/=end comment processor.
|
487
|
+
* Massive overhaul on Keyword class. All hail the mighty Hash!
|
488
|
+
* Massively cleaned up ident= edge cases and fixed a stupid bug from jruby.
|
489
|
+
* Merged @/@@ scanner together, going to try to do the same everywhere.
|
490
|
+
* Refactored fix_arg_lex_state, common across the lexer.
|
491
|
+
* Refactored new_fcall into new_call.
|
492
|
+
* Refactored some code to get better profile numbers.
|
493
|
+
* Refactored some more #fix_arg_lex_state.
|
494
|
+
* Refactored tail of yylex into its own method.
|
495
|
+
* Removed Module#kill
|
496
|
+
* Removed Token, replaced with Sexp.
|
497
|
+
* Removed all parse_number and parse_quote tests.
|
498
|
+
* Removed argspush, argscat. YAY!
|
499
|
+
* Removed as many token_buffer.split(//)'s as possible. 1 to go.
|
500
|
+
* Removed begins from compstmts
|
501
|
+
* Removed buffer arg for tokadd_string.
|
502
|
+
* Removed crufty (?) solo '@' token... wtf was that anyhow?
|
503
|
+
* Removed most jruby/stringio cruft from StringScanner.
|
504
|
+
* Removed one unread_many... 2 to go. They're harder.
|
505
|
+
* Removed store_comment, now done directly.
|
506
|
+
* Removed token_buffer. Now I just use token ivar.
|
507
|
+
* Removed use of s() from lexer. Changed the way line numbers are gathered.
|
508
|
+
* Renamed *qwords to *awords.
|
509
|
+
* Renamed StringScanner to RPStringScanner (a subclass) to fix namespace trashing.
|
510
|
+
* Renamed parse to process and aliased to parse.
|
511
|
+
* Renamed token_buffer to string_buffer since that arcane shit still needs it.
|
512
|
+
* Resolved the rest of the lexing issues I brought up w/ ruby-core.
|
513
|
+
* Revamped tokadd_escape.
|
514
|
+
* Rewrote Keyword and KWtable.
|
515
|
+
* Rewrote RubyLexer using StringScanner.
|
516
|
+
* Rewrote tokadd_escape. 79 lines down to 21.
|
517
|
+
* Split out lib/ruby_parser_extras.rb so lexer is standalone.
|
518
|
+
* Started to clean up the parser and make it as skinny as possible
|
519
|
+
* Stripped out as much code as possible.
|
520
|
+
* Stripped yylex of some dead code.
|
521
|
+
* Switched from StringIO to StringScanner.
|
522
|
+
* Updated rakefile for new hoe.
|
523
|
+
* Uses pure ruby racc if ENV['PURE_RUBY'], otherwise use c.
|
524
|
+
* Wrote a ton of lexer tests. Coverage is as close to 100% as possible.
|
525
|
+
* Wrote args to clean up the big nasty args processing grammar section.
|
526
|
+
* lex_strterm is now a plain array, removed RubyLexer#s(...).
|
527
|
+
* yield and super now flatten args.
|
528
|
+
|
529
|
+
* 21 bug fixes:
|
530
|
+
|
531
|
+
* I'm sure this list is missing a lot:
|
532
|
+
* Fixed 2 bugs both involving attrasgn (and ilk) esp when lhs is an array.
|
533
|
+
* Fixed a bug in the lexer for strings with single digit hex escapes.
|
534
|
+
* Fixed a bug parsing: a (args) { expr }... the space caused a different route to be followed and all hell broke loose.
|
535
|
+
* Fixed a bug with x\n=beginvar not putting begin back.
|
536
|
+
* Fixed attrasgn to have arglists, not arrays.
|
537
|
+
* Fixed bug in defn/defs with block fixing.
|
538
|
+
* Fixed class/module's name slot if colon2/3.
|
539
|
+
* Fixed dstr with empty interpolation body.
|
540
|
+
* Fixed for 1.9 string/char changes.
|
541
|
+
* Fixed lexer BS wrt determining token type of words.
|
542
|
+
* Fixed lexer BS wrt pass through values and lexing words. SO STUPID.
|
543
|
+
* Fixed lexing of floats.
|
544
|
+
* Fixed lexing of identifiers followed by equals. I hope.
|
545
|
+
* Fixed masgn with splat on lhs
|
546
|
+
* Fixed new_super to deal with block_pass correctly.
|
547
|
+
* Fixed parser's treatment of :colon2 and :colon3.
|
548
|
+
* Fixed regexp scanning of escaped numbers, ANY number is valid, not just octs.
|
549
|
+
* Fixed string scanning of escaped octs, allowing 1-3 chars.
|
550
|
+
* Fixed unescape for \n
|
551
|
+
* Fixed: omg this is stupid. '()' was returning bare nil
|
552
|
+
* Fixed: remove_begin now goes to the end, not sure why it didn't before.
|
553
|
+
|
554
|
+
=== 1.0.0 / 2007-12-20
|
555
|
+
|
556
|
+
* 1 major enhancement
|
557
|
+
* Birthday!
|
558
|
+
|