class Treetop::Compiler::CharacterClass

def compile(address, builder, parent_expression = nil)

def compile(address, builder, parent_expression = nil)
  super
  builder.if__ "has_terminal?(@regexps[gr = #{grounded_regexp(text_value)}] ||= Regexp.new(gr), :regexp, index)" do
    if address == 0 || decorated?
      assign_result "instantiate_node(#{node_class_name},input, index...(index + 1))"
      extend_result_with_inline_module
    else
      assign_lazily_instantiated_node
    end
    builder << "@index += 1"  # Always one character
  end
  builder.else_ do
    builder << "terminal_parse_failure(#{single_quote('['+characters+']')})"
    assign_result 'nil'
  end
end

def grounded_regexp(string)

def grounded_regexp(string)
  # Double any backslashes, then backslash any single-quotes:
  "'\\A#{string.gsub(/\\/) { '\\\\' }.gsub(/'/) { "\\'"}}'"
end