【Ruby3.x】RubyVM::AbstractSyntaxTree::Node::source()メソッドの使い方
sourceメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
sourceメソッドは、RubyVM::AbstractSyntaxTree::Nodeクラスのインスタンスが表す抽象構文木(AST)のノードに対応する、元のソースコードの範囲を示す情報を取得するメソッドです。
RubyVM::AbstractSyntaxTreeモジュールは、Rubyのプログラムコードを解析し、その論理的な構造を木のような形式(抽象構文木)で表現する機能を提供します。この木構造の個々の要素がNode(ノード)であり、例えば変数定義、メソッド呼び出し、ループ処理といったプログラムの様々な構成要素がそれぞれノードとして表現されます。
sourceメソッドを利用することで、特定のノードがもともとのRubyプログラム中のどの位置(ファイル内の行番号や文字位置)に書かれていたかという情報を把握できます。これは、コードの静的解析ツールやデバッガを作成する際に非常に有用です。例えば、ASTを走査して特定のパターンを見つけ出した際に、それが元のソースコードのどこに該当するのかをユーザーに示す必要がある場合などに活用されます。
システムエンジニアを目指す方にとっては、Rubyがどのようにコードを内部で解釈し、その構造を扱うかを理解するための一助となるでしょう。プログラムの実行前解析やメタプログラミングの学習において、このメソッドの存在を知っておくことは重要です。
構文(syntax)
1require 'rubyvm/abstract_syntax_tree' 2 3node = RubyVM::AbstractSyntaxTree.parse("x = 10 + 20").children[2].children[0] 4puts node.source
引数(parameters)
引数なし
引数はありません
戻り値(return)
String
RubyVM::AbstractSyntaxTree::Node クラスの source メソッドは、このノードが表すコード片のソースコード文字列を返します。