parser 0.9.alpha

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