aboutsummaryrefslogtreecommitdiff
path: root/src/nfa.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/nfa.rs')
-rw-r--r--src/nfa.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/nfa.rs b/src/nfa.rs
index 1474b46..bb0eeaa 100644
--- a/src/nfa.rs
+++ b/src/nfa.rs
@@ -63,7 +63,16 @@ impl NFA {
self.add_transition(l_last, r_first, Trans::Epsilon);
(first, r_last)
}
- RegexToken::Union(_) => todo!(),
+ RegexToken::Union((left, right)) => {
+ let first = self.add_state();
+ let (l_first, l_last) = self.regex_to_nfa_helper(*left);
+ let (r_first, r_last) = self.regex_to_nfa_helper(*right);
+ self.add_transition(first, l_first, Trans::Epsilon);
+ self.add_transition(first, r_first, Trans::Epsilon);
+ let last = self.add_state();
+ self.add_transition(l_last, last, Trans::Epsilon);
+ self.add_transition(r_last, last, Trans::Epsilon);
+ (first, last)
RegexToken::Plus(_) => todo!(),
RegexToken::Star(_) => todo!(),
RegexToken::Dot => {