I have been using Whitequark's Parser and Unparser to transform Ruby code.
I find the AST much easier to work with.. What sets this and ruby2ruby
apart?
···
On Tue, Jul 18, 2017 at 1:00 AM, Ryan Davis <ryand-ruby@zenspider.com> wrote:
ruby_parser version 3.10.0 has been released!
* home: <https://github.com/seattlerb/ruby_parser>
* bugs: <https://github.com/seattlerb/ruby_parser/issues>
* rdoc: <http://docs.seattlerb.org/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
return 1 if arg1 == 0
return 0
endbecomes:
s(:defn, :conditional1, s(:args, :arg1),
s(:if,
s(:call, s(:lvar, :arg1), :==, s(:lit, 0)),
s(:return, s(:lit, 1)),
nil),
s(:return, s(:lit, 0)))Tested against 801,039 files from the latest of all rubygems (as of
2013-05):* 1.8 parser is at 99.9739% accuracy, 3.651 sigma
* 1.9 parser is at 99.9940% accuracy, 4.013 sigma
* 2.0 parser is at 99.9939% accuracy, 4.008 sigmaChanges:
### 3.10.0 / 2017-07-17
* 4 minor enhancements:
* Added support for 'squiggly heredocs' (indented content). (jjoos)
* Bumped oedipus_lex to ~> 2.5.
* Bumped sexp_processor to ~> 4.9.
* Made STRICT_SEXP=1 safe: converted indexed sexps to semantic calls
where needed.* 5 bug fixes:
* Clear and restore cmdarg stack around defs args and body.
(presidentbeef)
* Conditionalize use of sexp_body= to make it compatible w/
sexp_processor 4.9.0
* Fix up line numbers in strings with newlines and `#`. (presidentbeef)
* Fixed line numbers of resbodies.
* Fixed some tracking of lexical state. Fixes bug #249.Unsubscribe: <mailto:ruby-talk-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-talk>
--
- Simen