Class: Astel::NodePattern::Lexer

Inherits:
Object
  • Object
show all
Defined in:
lib/astel/node_pattern/lexer.rb

Constant Summary collapse

SINGLE =
{ '(' => :lparen, ')' => :rparen, '{' => :lbrace, '}' => :rbrace,
':' => :colon, '$' => :capture }.freeze

Instance Method Summary collapse

Constructor Details

#initialize(source) ⇒ Lexer

Returns a new instance of Lexer.



9
10
11
12
13
14
# File 'lib/astel/node_pattern/lexer.rb', line 9

def initialize(source)
  @source = source
  @index = 0
  @line = 1
  @column = 1
end

Instance Method Details

#tokensObject



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/astel/node_pattern/lexer.rb', line 16

def tokens
  result = []
  loop do
    skip_whitespace
    break if eof?

    result << next_token
  end
  result << Token.new(type: :eof, value: nil, line: @line, column: @column)
  result
end