class Syntax::CSS21
def token(name, pattern=nil, &block)
def token(name, pattern=nil, &block) raise ArgumentError, "name required" unless name patterns = [] patterns << pattern if pattern yield(patterns) if block_given? if patterns.empty? raise ArgumentError, "at least one pattern required" end patterns.collect! do |pattern| source = pattern.source source = "\\A#{source}" Regexp.new(source, Regexp::IGNORECASE + Regexp::MULTILINE) end @tokens[name] = Regexp.union(*patterns) end