aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authoromagdy7 <omar.professional8777@gmail.com>2023-12-02 00:57:12 +0200
committeromagdy7 <omar.professional8777@gmail.com>2023-12-02 00:57:12 +0200
commitd66f8a4749cdc2bfe51527c50b846eef87be4e17 (patch)
tree66cdd457396dc4a37a2fa15aa66fefe1166fc05f /src/main.rs
parent1e73247d9c90d2cde48e4faa1970a0ecb7f26e38 (diff)
downloadrex-d66f8a4749cdc2bfe51527c50b846eef87be4e17.tar.xz
rex-d66f8a4749cdc2bfe51527c50b846eef87be4e17.zip
This almost works but fails it doesn't fail when there is extra input
Diffstat (limited to 'src/main.rs')
-rwxr-xr-xsrc/main.rs22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/main.rs b/src/main.rs
index e39b386..bcc0f01 100755
--- a/src/main.rs
+++ b/src/main.rs
@@ -3,15 +3,19 @@ mod regex;
use nfa::*;
use regex::*;
-fn main() {
- let input = "a*b";
- let token = Regex::new(String::from(input));
- println!("{input}\n{:#?}", token);
-
+fn test(regex: &str, input: &str) -> bool {
+ let token = Regex::new(String::from(regex));
+ dbg!(&token);
let mut nfa = NFA::new();
nfa.regex_to_nfa(token);
- println!("NFA: {:#?}", nfa);
- // let inp = "abcdefglmno";
- // let output = nfa.simulate(String::from(inp));
- // println!("{inp} was = {output}")
+ let mut x: Vec<(&usize, &State)> = nfa.states.iter().map(|(k, v)| (k, v)).collect();
+ x.sort();
+ dbg!(x);
+ // nfa.match_re(String::from(input))
+ true
+}
+
+fn main() {
+ // println!("{}", test("a.b..", "a.bxb"));
+ println!("{}", test(".*b", "aaaaaabbb"))
}