Module: Hoozuki
- Defined in:
- lib/hoozuki.rb,
lib/hoozuki/parser.rb,
lib/hoozuki/version.rb,
lib/hoozuki/node/choice.rb,
lib/hoozuki/vm/compiler.rb,
lib/hoozuki/node/epsilon.rb,
lib/hoozuki/node/literal.rb,
lib/hoozuki/vm/evaluator.rb,
lib/hoozuki/automaton/dfa.rb,
lib/hoozuki/automaton/nfa.rb,
lib/hoozuki/instruction/jmp.rb,
lib/hoozuki/node/repetition.rb,
lib/hoozuki/instruction/char.rb,
lib/hoozuki/instruction/match.rb,
lib/hoozuki/instruction/split.rb,
lib/hoozuki/automaton/state_id.rb,
lib/hoozuki/node/concatenation.rb,
lib/hoozuki/automaton/dfa/builder.rb
Defined Under Namespace
Modules: Automaton, Instruction, Node, VM
Classes: Parser, Pattern
Constant Summary
collapse
- VERSION =
'1.0.1'
Class Method Summary
collapse
Class Method Details
.compile(input, engine: :dfa) ⇒ Object
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/hoozuki.rb', line 35
def compile(input, engine: :dfa)
ast = Parser.new.parse(input)
case engine
when :dfa
nfa = Automaton::NFA.from_node(ast, Automaton::StateID.new(0))
Automaton::DFA.from_nfa(nfa, use_cache?(input))
when :vm
compiler = VM::Compiler.new
compiler.compile(ast)
compiler.instructions
else
raise ArgumentError, "Unknown engine: #{engine}"
end
end
|
.match?(pattern, input, engine: :dfa) ⇒ Boolean
50
51
52
|
# File 'lib/hoozuki.rb', line 50
def match?(pattern, input, engine: :dfa)
new(pattern, engine: engine).match?(input)
end
|
.new(pattern, engine: :dfa) ⇒ Object
31
32
33
|
# File 'lib/hoozuki.rb', line 31
def new(pattern, engine: :dfa)
Pattern.new(pattern, engine: engine)
end
|