44 lines
677 B
Ruby

module Imbecile
class Regex
class NFA
class State
attr_accessor :accepts
attr_reader :transitions
def initialize
@transitions = []
end
def add_transition(code_point, destination_state)
@transitions << [code_point, destination_state]
end
end
attr_accessor :start_state
attr_accessor :end_state
def initialize
@start_state = State.new
@end_state = State.new
end
class << self
def empty
nfa = NFA.new
nfa.start_state.add_transition(nil, nfa.end_state)
nfa
end
end
end
end
end