This is a Ruby tree! It shows every object from the Ruby Programming Language in a tree format.
# Ripper < Object (from ruby core) --- Ripper is a Ruby script parser. You can get information from the parser with event-based style. Information such as abstract syntax trees or simple lexical analysis of the Ruby program. ## Usage Ripper provides an easy interface for parsing your program into a symbolic expression tree (or S-expression). Understanding the output of the parser may come as a challenge, it's recommended you use PP to format the output for legibility. require 'ripper' require 'pp' pp Ripper.sexp('def hello(world) "Hello, #{world}!"; end') #=> [:program, [[:def, [:@ident, "hello", [1, 4]], [:paren, [:params, [[:@ident, "world", [1, 10]]], nil, nil, nil, nil, nil, nil]], [:bodystmt, [[:string_literal, [:string_content, [:@tstring_content, "Hello, ", [1, 18]], [:string_embexpr, [[:var_ref, [:@ident, "world", [1, 27]]]]], [:@tstring_content, "!", [1, 33]]]]], nil, nil, nil]]]] You can see in the example above, the expression starts with `:program`. From here, a method definition at `:def`, followed by the method's identifier `:@ident`. After the method's identifier comes the parentheses `:paren` and the method parameters under `:params`. Next is the method body, starting at `:bodystmt` (`stmt` meaning statement), which contains the full definition of the method. In our case, we're simply returning a String, so next we have the `:string_literal` expression. Within our `:string_literal` you'll notice two `@tstring_content`, this is the literal part for `Hello, ` and `!`. Between the two `@tstring_content` statements is a `:string_embexpr`, where *embexpr* is an embedded expression. Our expression consists of a local variable, or `var_ref`, with the identifier (`@ident`) of `world`. ## Resources * [Ruby Inside](http://www.rubyinside.com/using-ripper-to-see-how-ruby-is-pa rsing-your-code-5270.html) ## Requirements * ruby 1.9 (support CVS HEAD only) * bison 1.28 or later (Other yaccs do not work) ## License Ruby License. * Minero Aoki * aamine@loveruby.net * http://i.loveruby.net --- # Constants: EVENTS : This array contains name of all ripper events. PARSER_EVENTS : This array contains name of parser events. SCANNER_EVENTS : This array contains name of scanner events. Version : version of Ripper # Class methods: dedent_string lex lex_state_name new parse sexp sexp_raw slice tokenize # Instance methods: column compile_error debug_output debug_output= dedent_string encoding end_seen? error? filename lineno parse state token warn warning yydebug yydebug=
This is MURDOC! A Ruby documentation browser inspired by Smalltalk-80. It allows you to learn about Ruby by browsing through its class hierarchies, and see any of its methods.