From 7196a0605ab77ef131f26b0e384c67959e8539e6 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 18 May 2021 16:31:16 -0400 Subject: [PATCH] Add DFA class --- lib/imbecile.rb | 1 + lib/imbecile/grammar.rb | 1 + lib/imbecile/regex/dfa.rb | 12 ++++++++++++ 3 files changed, 14 insertions(+) create mode 100644 lib/imbecile/regex/dfa.rb diff --git a/lib/imbecile.rb b/lib/imbecile.rb index cfd22a5..0c6529b 100644 --- a/lib/imbecile.rb +++ b/lib/imbecile.rb @@ -1,6 +1,7 @@ require_relative "imbecile/cli" require_relative "imbecile/grammar" require_relative "imbecile/regex" +require_relative "imbecile/regex/dfa" require_relative "imbecile/regex/nfa" require_relative "imbecile/regex/unit" require_relative "imbecile/version" diff --git a/lib/imbecile/grammar.rb b/lib/imbecile/grammar.rb index 24e9e6d..0a19d75 100644 --- a/lib/imbecile/grammar.rb +++ b/lib/imbecile/grammar.rb @@ -42,6 +42,7 @@ module Imbecile @tokens.each do |token_name, token_def| token_def[:regex] = Regex.new(token_def[:pattern]) end + dfa = DFA.new(@tokens.map {|token_name, token_def| token_def[:regex].nfa}) end end diff --git a/lib/imbecile/regex/dfa.rb b/lib/imbecile/regex/dfa.rb new file mode 100644 index 0000000..53db7e9 --- /dev/null +++ b/lib/imbecile/regex/dfa.rb @@ -0,0 +1,12 @@ +module Imbecile + class Regex + + class DFA + + def initialize(nfas) + end + + end + + end +end