ANN: ParseTree 1.3.7 Released

R

Ryan Davis

ParseTree version 1.3.7 has been released!

http://www.zenspider.com/ZSS/Products/ParseTree/

** 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).

http://www.zenspider.com/ZSS/Products/ParseTree/

Changes:

+ 3 bug fixes:
+ Fixed rubygem requires for non-gem systems.
+ Renamed on to on_error_in to make more clear.
+ Moved exceptions to their own tree to make catching cleaner.

http://www.zenspider.com/ZSS/Products/ParseTree/
 
C

Clifford Heath

Ryan said:
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.

Any plans to implement the reverse, so that a parse-tree can be
generated and run? Or perhaps to produce a parse-tree to Ruby
source code generator?
 
M

Mark Hubbart

ParseTree version 1.3.7 has been released!
=20
http://www.zenspider.com/ZSS/Products/ParseTree/
=20
** DESCRIPTION:
=20
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.

Any thoughts on procs? It doesn't appear that there's any way of
dumping parsetrees for procs at the moment, which would be very handy.

I tried cheating a little, using an anonymous class and define_method,
but that made RubyToRuby cough up an "UnknownNodeType: nil" error, for
some reason, though I think the parsetree dumped fine.

thanks,
Mark
 
E

Eric Hodel

Any thoughts on procs? It doesn't appear that there's any way of
dumping parsetrees for procs at the moment, which would be very handy.

I tried cheating a little, using an anonymous class and define_method,
but that made RubyToRuby cough up an "UnknownNodeType: nil" error, for
some reason, though I think the parsetree dumped fine.

[ruby-talk:48082] or http://blog.zenspider.com/archives/2005/07/
rash_of_ruby_re.html

I don't think we've bothered looking for the AST of a proc yet. It
was easier to just bind it to a method and let Ruby2Ruby handle it.
 

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

Forum statistics

Threads
473,743
Messages
2,569,477
Members
44,898
Latest member
BlairH7607

Latest Threads

Top