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