class RubyVM::AbstractSyntaxTree::Node - RDoc Documentation

# class RubyVM::AbstractSyntaxTree::Node

`RubyVM::AbstractSyntaxTree::Node` instances are created by parse methods in `RubyVM::AbstractSyntaxTree`.

This class is MRI specific.

### Public Instance Methods

children → array click to toggle source

Returns AST nodes under this one. Each kind of node has different children, depending on what kind of node it is.

The returned array may contain other nodes or `nil`.

    # File ast.rb, line 133
    def children
      Primitive.ast_node_children
    end

first_column → integer click to toggle source

The column number in the source code where this AST's text began.

    # File ast.rb, line 106
    def first_column
      Primitive.ast_node_first_column
    end

first_lineno → integer click to toggle source

The line number in the source code where this AST's text began.

    # File ast.rb, line 98
    def first_lineno
      Primitive.ast_node_first_lineno
    end

inspect → string click to toggle source

Returns debugging information about this node as a string.

    # File ast.rb, line 141
    def inspect
      Primitive.ast_node_inspect
    end

last_column → integer click to toggle source

The column number in the source code where this AST's text ended.

    # File ast.rb, line 122
    def last_column
      Primitive.ast_node_last_column
    end

last_lineno → integer click to toggle source

The line number in the source code where this AST's text ended.

    # File ast.rb, line 114
    def last_lineno
      Primitive.ast_node_last_lineno
    end

pretty_print(q) click to toggle source

    # File lib/pp.rb, line 547
    def pretty_print(q)
      q.group(1, "(#{type}@#{first_lineno}:#{first_column}-#{last_lineno}:#{last_column}", ")") {
        case type
        when :SCOPE
          pretty_print_children(q, %w"tbl args body")
        when :ARGS
          pretty_print_children(q, %w[pre_num pre_init opt first_post post_num post_init rest kw kwrest block])
        when :DEFN
          pretty_print_children(q, %w[mid body])
        when :ARYPTN
          pretty_print_children(q, %w[const pre rest post])
        when :HSHPTN
          pretty_print_children(q, %w[const kw kwrest])
        else
          pretty_print_children(q)
        end
      }
    end

pretty_print_children(q, names = []) click to toggle source

    # File lib/pp.rb, line 534
    def pretty_print_children(q, names = [])
      children.zip(names) do |c, n|
        if n
          q.breakable
          q.text "#{n}:"
        end
        q.group(2) do
          q.breakable
          q.pp c
        end
      end
    end

type → symbol click to toggle source

Returns the type of this node as a symbol.

    root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2")
    root.type # => :SCOPE
    lasgn = root.children[2]
    lasgn.type # => :LASGN
    call = lasgn.children[1]
    call.type # => :OPCALL

    # File ast.rb, line 90
    def type
      Primitive.ast_node_type
    end