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

class Prism::Token

[edit]

要約

Prism?.lex や Prism?.parse_lex の結果に含まれる、字句解析で得られたトークンを表すクラスです。

例
require "prism"

token, _state = Prism.lex("1 + 2").value.first
p token.class    # => Prism::Token
p token.type     # => :INTEGER
p token.value    # => "1"
p token.location.start_column # => 0

[SEE_ALSO] Prism?.lex, Prism?.parse_lex

目次

インスタンスメソッド

インスタンスメソッド

self == other -> boolRuby 3.3 から[permalink][rdoc][edit]

other が同じ type と value を持つ Prism::Token であれば true を返します。位置(location)は比較しないため、ソースコード上の別の場所にある同じ内容のトークンどうしも等しいと判定されます。

[PARAM] other:
比較対象のオブジェクト
例
require "prism"

tokens = Prism.lex("1 + 1").value
p tokens[0][0] == tokens[2][0] # => true (別の位置の "1" どうし)
deconstruct_keys(keys) -> HashRuby 3.3 から[permalink][rdoc][edit]

パターンマッチのハッシュパターン(case token; in {type:, value:})で使われます。type・value・location をキーに持つハッシュを返します。

[PARAM] keys:
取り出したいキーの配列を指定します。すべて取り出す場合は nil を指定します。
例
require "prism"

token, _state = Prism.lex("1 + 2").value.first
case token
in {type:, value:}
  p [type, value]
end
# => [:INTEGER, "1"]
deep_freeze -> ()Ruby 4.0 から[permalink][rdoc][edit]

self と、保持しているトークンの文字列・位置情報を frozen にします。

例
require "prism"

token, _state = Prism.lex("1 + 2").value.first
token.deep_freeze
p token.frozen?       # => true
p token.value.frozen? # => true

[SEE_ALSO] Prism::Source#deep_freeze

location -> Prism::LocationRuby 3.3 から[permalink][rdoc][edit]

トークンのソースコード上の位置を表す Prism::Location を返します。

type -> SymbolRuby 3.3 から[permalink][rdoc][edit]

トークンの種類を表すシンボル(例: :INTEGER、:PLUS、 :IDENTIFIER)を返します。

value -> StringRuby 3.3 から[permalink][rdoc][edit]

トークンに対応するソースコードの文字列を返します。