diff options
| author | omagdy7 <omar.professional8777@gmail.com> | 2023-11-30 17:45:30 +0200 |
|---|---|---|
| committer | omagdy7 <omar.professional8777@gmail.com> | 2023-11-30 17:45:30 +0200 |
| commit | 03ab86649b2ffa00c923d1460fadb906d6d680d5 (patch) | |
| tree | b539ce14dee3499d3ed4cfbece4fef8e2a0ae439 /src/nfa.rs | |
| parent | 99da88542e40325925aa22df1b08abc3fded46ee (diff) | |
| download | rex-03ab86649b2ffa00c923d1460fadb906d6d680d5.tar.xz rex-03ab86649b2ffa00c923d1460fadb906d6d680d5.zip | |
Added Thompson's concatenation
Diffstat (limited to 'src/nfa.rs')
| -rw-r--r-- | src/nfa.rs | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -56,8 +56,12 @@ impl NFA { (first, last) } RegexToken::Concat((left, right)) => { - self.regex_to_nfa(*left); - self.regex_to_nfa(*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(l_last, r_first, Trans::Epsilon); + (first, r_last) } RegexToken::Union(_) => todo!(), RegexToken::Plus(_) => todo!(), |
