diff --git a/Cargo.toml b/Cargo.toml index c2f4eef..b85ae18 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,5 +7,5 @@ edition = "2024" lalrpop = "0.22" [dependencies] -dot = "0.1" +regex = { version = "1.11", features = ["unicode-bool"] } lalrpop-util = { version = "0.22", features = ["lexer", "unicode"] } diff --git a/src/main.rs b/src/main.rs index f7cebaa..cd2a8a0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,7 +11,7 @@ fn main() -> std::io::Result<()> { // std::thread::sleep(std::time::Duration::new(2, 0)); // println!("{}", now.elapsed().as_micros()); - // examples::stats()?; + examples::stats()?; // examples::freq()?; diff --git a/src/rsprocess/grammar.lalrpop b/src/rsprocess/grammar.lalrpop index c2807c9..49fcef4 100644 --- a/src/rsprocess/grammar.lalrpop +++ b/src/rsprocess/grammar.lalrpop @@ -17,13 +17,25 @@ grammar(translator: &mut Translator); // Helpers // ----------------------------------------------------------------------------- +// order +match { + r"[0-9]+" => NUMBER +} else { + r"([[:alpha:]]|\p{Emoji})([[:word:]]|\p{Emoji})*" => WORD +} else { + _ +} + + // matches words (letter followed by numbers, letters or _) -Literal = { r"[[:alpha:]][[:word:]]*" }; +Literal: String = { + WORD => <>.to_string() +}; // all numbers are i64 Num: i64 = { - r"[0-9]+" =>? i64::from_str(<>) - .map_err(|_| ParseError::User { error: "Number is too big" }) + NUMBER =>? i64::from_str(<>) + .map_err(|_| ParseError::User { error: "Number is too big" }) }; // macro for matching sequence of patterns with C as separator diff --git a/testing/first.experiment b/testing/first.experiment index 9a30e62..54e99a2 100644 --- a/testing/first.experiment +++ b/testing/first.experiment @@ -1,2 +1,2 @@ Weights: 10,10 -Sets: {a,b},{a} \ No newline at end of file +Sets: {a,b},{a, 😵} \ No newline at end of file diff --git a/testing/first.system b/testing/first.system index 765bddb..e99d558 100644 --- a/testing/first.system +++ b/testing/first.system @@ -1,4 +1,4 @@ -Environment: [x = {a}.y, y =({a}.nill + {b}.nill)] +Environment: [x = {a}.🐶, 🐶 =({a}.nill + {b}.nill)] Initial Entities: {a, b} Context: [({a,b}.{a}.{a,c}.x + {a,b}.{a}.{a}.nil)] -Reactions: ([r: {a,b}, i: {c}, p: {b}]) +Reactions: ([r: {a,b}, i: {c}, p: {b, 😵}])