Spec-Zone.ru › Ruby 2.7

class RubyVM::AbstractSyntaxTree::Node

Parent:
Object

RubyVM::AbstractSyntaxTree::Node экземпляры создаются методами парсинга в RubyVM::AbstractSyntaxTree.

Этот класс специфичен для MRI.

Публичные методы экземпляров

children → массив Показать исходный код
# File ast.rb, line 131
def children
  __builtin_ast_node_children
end

Возвращает узлы AST, подчиненные данному узлу. Каждый тип узла имеет разные дочерние узлы, в зависимости от его типа.

Возвращаемый массив может содержать другие узлы или nil.

first_column → целое число Показать исходный код
# File ast.rb, line 104
def first_column
  __builtin_ast_node_first_column
end

Номер столбца в исходном коде, где начался текст этого узла AST.

first_lineno → целое число Показать исходный код
# File ast.rb, line 96
def first_lineno
  __builtin_ast_node_first_lineno
end

Номер строки в исходном коде, где начался текст этого узла AST.

inspect → строка Показать исходный код
# File ast.rb, line 139
def inspect
  __builtin_ast_node_inspect
end

Возвращает отладочную информацию об этом узле в виде строки.

last_column → целое число Показать исходный код
# File ast.rb, line 120
def last_column
  __builtin_ast_node_last_column
end

Номер столбца в исходном коде, где закончился текст этого узла AST.

last_lineno → целое число Показать исходный код
# File ast.rb, line 112
def last_lineno
  __builtin_ast_node_last_lineno
end

Номер строки в исходном коде, где закончился текст этого узла AST.

pretty_print(q) Показать исходный код
# File lib/pp.rb, line 542
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 = []) Показать исходный код
# File lib/pp.rb, line 529
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 → символ Показать исходный код
# File ast.rb, line 88
def type
  __builtin_ast_node_type
end

Возвращает тип этого узла в виде символа.

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

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API