Forum: Ruby ruby_parser 3.0.0.a3 Released

5a837592409354297424994e8d62f722?d=identicon&s=25 Ryan Davis (Guest)
on 2012-07-04 05:05
(Received via mailing list)
ruby_parser version 3.0.0.a3 has been released!

* bugs: <https://github.com/seattlerb/ruby_parser/issues>
* rdoc: <http://docs.seattlerb.org/ruby_parser>
* home: <https://github.com/seattlerb/ruby_parser>

ruby_parser (RP) is a ruby parser written in pure ruby (utilizing
racc--which does by default use a C extension). RP's output is
the same as ParseTree's output: s-expressions using ruby's arrays and
base types.

As an example:

  def conditional1(arg1)
    if arg1 == 0 then
      return 1
    end
    return 0
  end

becomes:

  s(:defn, :conditional1,
   s(:args, :arg1),
   s(:scope,
    s(:block,
     s(:if,
      s(:call, s(:lvar, :arg1), :==, s(:arglist, s(:lit, 0))),
      s(:return, s(:lit, 1)),
      nil),
     s(:return, s(:lit, 0)))))

Changes:

### 3.0.0.a3 / 2012-07-03

* 1 major enhancement:

  * OMG! Implemented all the 1.9 arg crap and I went from 500 lines of
    structural diff to 32!

* 17 minor enhancements:

  * 1.9: !(...) is now a method call. ugh
  * 1.9: Added __ENCODING__ keyword (returns Unsupported atm).
  * 1.9: Added support for "a.()" thingy. whatever you call it. Have I
ever mentioned that ruby has too much syntax? I mean really...
  * 1.9: Moved kRETURN/kBREAK/kNEXT from command_call to command
  * 1.9: Removed when_args and refactored into args production.
  * 1.9: Support for not/! being a call to #!. why matz? why?!?
  * 1.9: Support for trailing comma support in opt call args.
  * 1.9: Switched keyword support to deal with 1.8 vs 1.9 differences.
  * 1.9: refactored and created command_asgn
  * 1.9: removed case/else from primary
  * 1.9: reworked mlhs and family. Now horrible things like 'a, *, c =
f' work
  * 1.9: reworked top level rules from program to expr. Lots of lame
refactorings in mri.
  * Moved 'a[]' from primary down to method_call
  * Removed 'args trailer' production from assoc_list (eg {1, 2}).
  * Removed 1.9 support for : as a terminator in do/then
  * RubyParser no longer subclasses the 18 parser, so I had to change
some consts around.
  * Undeprecated RubyParser - but now it is a compound parser that tries
1.9 first.

* 3 bug fixes:

  * 1.9: fixed bang method name.
  * Fixed case/when/splat handling on both 1.8 and 1.9.
  * Removed lambda_body production from lambda
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.