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? # => truerequire "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
- [PARAM]