From 145efc39d14c242266c574063ffcba329c62e8a3 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 19 Jul 2025 15:24:30 +0900 Subject: implement parsing --- src/syntax.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/syntax.rs (limited to 'src/syntax.rs') diff --git a/src/syntax.rs b/src/syntax.rs new file mode 100644 index 0000000..abf7309 --- /dev/null +++ b/src/syntax.rs @@ -0,0 +1,27 @@ +pub mod ast; +pub mod parse; + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn parse_valid() { + assert!(parse::parse("").is_ok()); + assert!(parse::parse("a").is_ok()); + assert!(parse::parse("ab").is_ok()); + assert!(parse::parse("abc").is_ok()); + assert!(parse::parse("a|b").is_ok()); + assert!(parse::parse("a|b*").is_ok()); + assert!(parse::parse("(a|b)*").is_ok()); + assert!(parse::parse("(((a|b)))*").is_ok()); + assert!(parse::parse("a*b*").is_ok()); + } + + #[test] + fn parse_invalid() { + assert!(parse::parse("(").is_err()); + assert!(parse::parse("()))").is_err()); + assert!(parse::parse("(((())").is_err()); + } +} -- cgit v1.2.3-70-g09d2