module YARD::Parser::Ruby::Legacy::RubyToken

Legacy lexical tokenizer module.

Constants

EXPR_ARG
EXPR_BEG
EXPR_CLASS
EXPR_DOT
EXPR_END
EXPR_FNAME
EXPR_MID
NEWLINE_TOKEN
TkReading2Token

{ reading => token_class } { reading => [token_class, *opt] }

TkSymbol2Token
TokenDefinitions

@private

Public Class Methods

def_token(token_n, super_token = Token, reading = nil, *opts) click to toggle source

@private

# File lib/yard/parser/ruby/legacy/ruby_lex.rb, line 275
def self.def_token(token_n, super_token = Token, reading = nil, *opts)
  token_n = token_n.id2name unless token_n.is_a?(String)
  if RubyToken.const_defined?(token_n)
    # IRB.fail AlreadyDefinedToken, token_n
  end

  token_c = Class.new super_token
  RubyToken.const_set token_n, token_c
  # token_c.inspect

  if reading
    if TkReading2Token[reading]
      raise "duplicate #{token_n} #{reading}"
    end
    if opts.empty?
      TkReading2Token[reading] = [token_c]
    else
      TkReading2Token[reading] = [token_c].concat(opts)
    end
  end
  TkSymbol2Token[token_n.intern] = token_c

  if token_c <= TkOp
    token_c.class_eval %{
      def self.op_name; "#{reading}"; end
    }
  end
end

Public Instance Methods

Token(token, value = nil) click to toggle source

@private

# File lib/yard/parser/ruby/legacy/ruby_lex.rb, line 125
def Token(token, value = nil) # rubocop:disable Style/MethodName
  tk = nil
  case token
  when String, Symbol
    source = token.is_a?(String) ? TkReading2Token : TkSymbol2Token
    if (tk = source[token]).nil?
      raise "no key #{token}"
    end
    tk = Token(tk[0], value)
  else
    if token
      tk = if (token.ancestors & [TkId, TkVal, TkOPASGN, TkUnknownChar]).empty?
             token.new(@prev_line_no, @prev_char_no)
           else
             token.new(@prev_line_no, @prev_char_no, value)
           end
    end
  end
  tk
end
set_token_position(line, char) click to toggle source

@private

# File lib/yard/parser/ruby/legacy/ruby_lex.rb, line 119
def set_token_position(line, char)
  @prev_line_no = line
  @prev_char_no = char
end