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