Я использую StringScanner для лексического анализа следующим образом:
def next
@scanner.skip(/\s+/)
value,kind=nil,nil
TOKEN_DEF.each{|tok,regex| (kind=tok;break) if @scanner.scan(regex)}
return Token.new(kind,value,@line,@scanner.pos)
end
В первом приближении это работает хорошо, за исключением того, что я не могу понять, как теперь получить число @line.
Я прочитал документ, где begin_of_line?метод кажется подходящим, но я не могу понять, как его использовать.