ParseTree version 2.0.1 has been released!

| | Comments (0)

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]]]]]
  • Uses RubyInline, so it just drops in.
  • Includes SexpProcessor and CompositeSexpProcessor.
    • Allows you to write very clean filters.
  • Includes UnifiedRuby, allowing you to automatically rewrite ruby quirks.
  • ParseTree#parsetreefor_string lets you parse arbitrary strings of ruby.
  • Includes parsetreeshow, which lets you quickly snoop code.
    • echo "1+1" | parsetreeshow -f for quick snippet output.
  • Includes parsetreeabc, which lets you get abc metrics on code.
    • abc metrics = numbers of assignments, branches, and calls.
    • whitespace independent metric for method complexity.
  • Includes parsetreedeps, which shows you basic class level dependencies.
  • Does not work on the core classes, as they are not ruby (yet).

Changes:

  • 1 major enhancement:

    • Rewrote parsetreeshow to use parsetreefor_string.
    • parsetreeshow adds -n=node filtering -u unifying, and -s structure-only.
    • parsetreeshow no longer needs -f
  • 4 minor enhancements:

    • Added context stack to SexpProcessor! YAY!!!
    • Enforce type to be symbol in SexpProcessor... just makes life easier.
    • Processing style change mode to UnifiedRuby. Prefer no rescues.
    • Sexp#structure is no longer destructive.
  • 4 bug fixes:

    • Added 1.8.4 compatibility fix.
    • Added args lifting in :defs in UnifiedRuby.
    • Fixed unifying argscat, splat, and a couple other oddities.
    • Added process_call to UnifiedRuby sigh I'm a tard.
  • http://www.zenspider.com/ZSS/Products/ParseTree/

Leave a comment

About this Entry

This page contains a single entry by zenspider published on August 21, 2007 12:28 AM.

RubyInline version 3.6.4 has been released! was the previous entry in this blog.

ruby2ruby version 1.1.7 has been released! is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Pages

Powered by Movable Type 4.32-en