class RubyVM::AbstractSyntaxTree::Node

Parent:
Object

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

This class is MRI specific.

Public Instance Methods

children → array Show source
# File ast.rb, line 133
def children
  Primitive.ast_node_children
end

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.

first_column → integer Show source
# File ast.rb, line 106
def first_column
  Primitive.ast_node_first_column
end

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

first_lineno → integer Show source
# File ast.rb, line 98
def first_lineno
  Primitive.ast_node_first_lineno
end

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

inspect → string Show source
# File ast.rb, line 141
def inspect
  Primitive.ast_node_inspect
end

Returns debugging information about this node as a string.

last_column → integer Show source
# File ast.rb, line 122
def last_column
  Primitive.ast_node_last_column
end

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

last_lineno → integer Show source
# File ast.rb, line 114
def last_lineno
  Primitive.ast_node_last_lineno
end

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

pretty_print(q) Show 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 = []) Show 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 Show source
# File ast.rb, line 90
def type
  Primitive.ast_node_type
end

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

Ruby Core © 1993–2020 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.