Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[ANN] ParseTree 1.3.6 Released

0 views
Skip to first unread message

Ryan Davis

unread,
May 20, 2005, 2:35:24 AM5/20/05
to
ParseTree version 1.3.6 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:

+ 2 minor enhancements:
+ Improved debugging capability when $DEBUG.
+ Allowed for selective debugging output by node type.
+ 3 bug fixes:
+ Minor fixes to Makefile and parse_tree_show.
+ Improved error messages in parse_tree when newlines are included.
+ Improved method coverage for parse_tree.

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

--
ryand...@zenspider.com - Seattle.rb - http://www.zenspider.com/
seattle.rb
http://blog.zenspider.com/ - http://rubyforge.org/projects/ruby2c


graham.r...@gmail.com

unread,
May 20, 2005, 1:30:36 PM5/20/05
to
For the record, here are the changes I made to get inline.rb to run on
Win32 with MSVC...

68d67
<
268c267
< @real_caller = real_caller.split(/:/).first
---
> @real_caller = real_caller.split(/:/)[1]
377,378c376
< cmd = "#{Config::CONFIG['LDSHARED']} #{flags}
#{Config::CONFIG['CFLAGS']} -I #{hdrdir} -o #{so_name} #{src_name}
#{libs}"
<
---
> cmd = "#{Config::CONFIG['LDSHARED']}
#{Config::CONFIG['CFLAGS']} -I #{hdrdir} -o #{so_name} #{src_name}
#{libs}"

And to parse_tree_deps.rb, for some reason
41c41
< deps.keys.sort.each do |dep_to|
---
> deps.keys.each do |dep_to|

I ran the VCVARS32.BAT script to set up MSVC, added \RUBY\LIB to the
LIB env variable, and set INLINEDIR=tmp. There are more changes needed
to get the test suite to pass, but this seems to suffice for the
examples.

Eric Hodel

unread,
May 20, 2005, 3:47:56 PM5/20/05
to
On 20 May 2005, at 10:35, graham.r...@gmail.com wrote:

> For the record, here are the changes I made to get inline.rb to run on
> Win32 with MSVC...

[snip]

> I ran the VCVARS32.BAT script to set up MSVC, added \RUBY\LIB to the
> LIB env variable, and set INLINEDIR=tmp. There are more changes needed
> to get the test suite to pass, but this seems to suffice for the
> examples.

Could you submit your patch to the project page?

http://rubyforge.org/projects/rubyinline/

Patches tracker:

http://rubyforge.org/tracker/?atid=1776&group_id=440&func=browse

--
Eric Hodel - drb...@segment7.net - http://segment7.net
FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04

0 new messages