Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > ripper/lexerライブラリ > Ripperクラス > lex
lex(src, filename = '-', lineno = 1) -> [[Integer, Integer], Symbol, String]
[permalink][rdoc] [added by ripper/lexer]
Ruby プログラム str をトークンに分割し、そのリストを返します。 ただし Ripper.tokenize と違い、トークンの種類と位置情報も付属します。
使用例
require 'ripper' require 'pp' pp Ripper.lex("def m(a) nil end") #=> [[[1, 0], :on_kw, "def"], [[1, 3], :on_sp, " "], [[1, 4], :on_ident, "m"], [[1, 5], :on_lparen, "("], [[1, 6], :on_ident, "a"], [[1, 7], :on_rparen, ")"], [[1, 8], :on_sp, " "], [[1, 9], :on_kw, "nil"], [[1, 12], :on_sp, " "], [[1, 13], :on_kw, "end"]]
Ripper.lex は分割したトークンを詳しい情報とともに返します。 返り値の配列の要素は 3 要素の配列 (概念的にはタプル) です。 その内訳を以下に示します。
トークンが置かれている行 (1-origin) と桁 (0-origin) の 2 要素の配列です。
トークンの種類が「:on_XXX」の形式のシンボルで渡されます。
トークン文字列です。