ParseTree 1.2.0 Released

R

Ryan Davis

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.
 
S

Sam Stephenson

Hi Ryan,

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
 
R

Ryan Davis

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,163
Messages
2,570,897
Members
47,434
Latest member
TobiasLoan

Latest Threads

Top