class RegularExpression::AST::CharacterClass

Attributes

value[R]

Public Class Methods

new(value) click to toggle source
# File lib/regular_expression/ast.rb, line 149
def initialize(value)
  @value = value
end

Public Instance Methods

to_dot(parent) click to toggle source
# File lib/regular_expression/ast.rb, line 153
def to_dot(parent)
  parent.add_node(object_id, label: value, shape: "box")
end
to_nfa(start, finish) click to toggle source
# File lib/regular_expression/ast.rb, line 157
def to_nfa(start, finish)
  case value
  when "\\w"
    start.add_transition(NFA::Transition::Range.new(finish, "a", "z"))
    start.add_transition(NFA::Transition::Range.new(finish, "A", "Z"))
    start.add_transition(NFA::Transition::Range.new(finish, "0", "9"))
    start.add_transition(NFA::Transition::Value.new(finish, "_"))
  when "\\W"
    start.add_transition(NFA::Transition::Invert.new(finish, [*("a".."z"), *("A".."Z"), *("0".."9"), "_"]))
  when "\\d"
    start.add_transition(NFA::Transition::Range.new(finish, "0", "9"))
  when "\\D"
    start.add_transition(NFA::Transition::Range.new(finish, "0", "9", invert: true))
  else
    raise
  end
end