This is a Ruby tree! It shows every object from the Ruby Programming Language in a tree format.

Ripper

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