class RegularExpression::Lexer
Constants
- SINGLE
Public Class Methods
new(source)
click to toggle source
# File lib/regular_expression/lexer.rb, line 23 def initialize(source) @source = source.dup end
Public Instance Methods
tokens()
click to toggle source
# File lib/regular_expression/lexer.rb, line 27 def tokens result = [] until @source.empty? case @source when /\A\\[wWdD]/ result << [:CHAR_CLASS, $&] when /\A(?:\\[Az]|\$)/ result << [:ANCHOR, $&] when /\A[\^$()\[\]{}|*+?.\-,]/ result << [SINGLE[$&], $&] when /\A\d+/ result << [:INTEGER, $&.to_i] when /\A(?:\u0009|\u000A|\u000D|[\u0020-\uD7FF]|[\uE000-\uFFFD])/ result << [:CHAR, $&] else raise SyntaxError, @source end @source = $' end result << [false, "end"] result end