module Regexp::Parser
def self.meta(token)
def self.meta(token) case token.token when :dot @node << CharacterType::Any.new(token) when :alternation unless @node.token == :alternation unless @node.last.is_a?(Alternation) alt = Alternation.new(token) seq = Sequence.new while @node.expressions.last seq.insert @node.expressions.pop end alt.alternative(seq) @node << alt @node = alt @node.alternative else @node = @node.last @node.alternative end else @node.alternative end else raise UnknownTokenError.new('Meta', token) end end