1234567891011121314151617181920212223242526272829303132333435 |
- module Chervil
- class Lexer
- def initialize(source)
- @source = source
- @position = 0
- end
-
- def current_char
- @source[@position]
- end
-
- def advance
- @position += 1
- end
-
- def get_next_token
- case current_char
- when '('
- advance
- Token.new(:lparen, "(")
- when ')'
- advance
- Token.new(:rparen, ")")
- end
- end
-
- def tokenize
- tokens = Array.new
- until @position == @source.size
- tokens << get_next_token
- end
- tokens
- end
- end
- end
|