ParseTree 1.2.0 Released

ParseTree version 1.2.0 has been released!

** DESCRIPTION:

ParseTree is a C extension (using RubyInline) that extracts the parse
tree for an entire class or a specific method and returns it as a
s-expression (aka sexp) using ruby's arrays, strings, symbols, and
integers.

As an example:

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

becomes:

   [:defn,
     :conditional1,
     [:scope,
      [:block,
       [:args, :arg1],
       [:if,
        [:call, [:lvar, :arg1], :==, [:array, [:lit, 0]]],
        [:return, [:lit, 1]],
        nil],
       [:return, [:lit, 0]]]]]

** FEATURES/PROBLEMS:

+ Uses RubyInline, so it just drops in.
+ Includes SexpProcessor and CompositeSexpProcessor.
  + Allows you to write very clean filters.
+ Includes show.rb, which lets you quickly snoop code.
+ Includes abc.rb, which lets you get abc metrics on code.
  + abc metrics = numbers of assignments, branches, and calls.
  + whitespace independent metric for method complexity.
+ Only works on methods in classes/modules, not arbitrary code.
+ Does not work on the core classes, as they are not ruby (yet).

Changes:

+ 9 minor enhancements
  + ParseTree now returns symbols for all data except in :str and :lit.
    + This WILL break existing code! (as if any exists)
  + ParseTree.parse_tree now takes a list of classes, no optional method.
  + ParseTree.parse_tree_for_method(klass, method) added.
  + ParseTree.parse_tree now returns a list of :class/:module nodes.
  + Added -f to parse_tree_show for uber fast demos.
  + Added -q to parse_tree_show to NOT use pp so it is mucho faster.
  + running with $DEBUG will trace the methods and nodes as processed.
  + Added rdoc to everything.
  + Gemified
+ 4 bug fixes
  + Bus error in iter/for nodes where arg list is empty now fixed.
  + Bus error when handling 'def method(*)' is now fixed.
  + Unnamed classes and superclasses (ugh) are now handled.
  + parse_tree_abc now enumerates actual types rather than every token.

Hi Ryan,

···

On Fri, 3 Dec 2004 09:58:43 +0900, Ryan Davis <ryand@zenspider.com> wrote:

ParseTree version 1.2.0 has been released!

** DESCRIPTION:

ParseTree is a C extension (using RubyInline) that extracts the parse
tree for an entire class or a specific method and returns it as a
s-expression (aka sexp) using ruby's arrays, strings, symbols, and
integers.

This looks exciting. I can't wait to install the Gem.

Is there something yet which turns the parse tree back into Ruby code?

Sam

ParseTree version 1.2.0 has been released!

** DESCRIPTION:

ParseTree is a C extension (using RubyInline) that extracts the parse
tree for an entire class or a specific method and returns it as a
s-expression (aka sexp) using ruby's arrays, strings, symbols, and
integers.

This looks exciting. I can't wait to install the Gem.

Go for it. I look forward to your feedback.

Is there something yet which turns the parse tree back into Ruby code?

No, there isn't. I've been tempted to writes something to do that, but we(*) have our hands full with RubyInline, ParseTree, and Ruby2C right now.

*) Eric Hodel and me.

···

On Dec 2, 2004, at 5:51 PM, Sam Stephenson wrote:

On Fri, 3 Dec 2004 09:58:43 +0900, Ryan Davis <ryand@zenspider.com> > wrote: