Ruby 4.0 リファレンスマニュアル

module function Prism?.parse

parse(source, **options) -> Prism::ParseResultRuby 3.3 から[permalink][rdoc][edit]

Ruby プログラムのソースコード文字列 source を構文解析し、結果を Prism::ParseResult として返します。

prism はエラー耐性のあるパーサなので、構文エラーがあっても可能な限り解析を継続し、部分的な構文木を Prism::ParseResult#value に格納します。エラーの有無は Prism::ParseResult#success?Prism::ParseResult#errors で確認できます。

[PARAM] source:
解析する Ruby プログラムの文字列を指定します。
[PARAM] options:
解析オプションをキーワード引数で指定します。主なものは以下の通りです。
:filepath

ソースコードのファイルパスを指定します(エラーメッセージなどに使われます)。

:line

解析を開始する行番号(1 始まり)を指定します。

:encoding

ソースコードのエンコーディングを指定します。

:scopes

ソースコードの周囲で定義済みのローカル変数を、シンボルの配列の配列で指定します。eval のように周囲のローカル変数を引き継いで解析したい場合に使います。

:version

解析に使う Ruby の構文バージョンを文字列(例 "3.3.0")で指定します。省略時は最新の構文として解析します。

上記以外にも :command_line, :frozen_string_literal, :main_script, :partial_script などのオプションがあります。利用可能なオプションの完全な一覧は prism のバージョンによって多少異なるため、公式ドキュメントを参照してください。

require "prism"

result = Prism.parse("1 + 2")
p result.class          # => Prism::ParseResult
p result.value.class    # => Prism::ProgramNode
p result.success?       # => true
例: 構文エラーがあっても解析を継続する
require "prism"

result = Prism.parse('"unterminated')
p result.success?              # => false
p result.errors.size           # => 1
p result.errors.first.message  # => "unterminated string meets end of file"
p result.value.class           # => Prism::ProgramNode (エラーがあっても構文木は返る)

[SEE_ALSO] Prism::ParseResult