From 8463dd24f815fe2b8f25fe9763e0a43023bfbb20 Mon Sep 17 00:00:00 2001 From: JSDurand Date: Fri, 23 Dec 2022 00:36:31 +0800 Subject: renaming core to chain and some other changes Some changes: - The core crate is renamed to "chain". - The crate "viz" is added, which will provide layered graph drawing algorithms. - A function is added to convert from a grammar to the regular language of its left-linear closures. - A function is added to convert from a nondeterministic finite automaton to its "null" closure. A null closure is the same automaton with edges added, as if some edges are "null". Whether an edge is null is determined by a function. Combined with the previous change, we can convert a grammar to the regular language of the null closure of its left-linear closures. --- Now it remains to test more grammars and add an Atom trait, before finishing the part about compilations. --- viz/Cargo.toml | 9 +++++++++ viz/src/lib.rs | 31 +++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 viz/Cargo.toml create mode 100644 viz/src/lib.rs (limited to 'viz') diff --git a/viz/Cargo.toml b/viz/Cargo.toml new file mode 100644 index 0000000..2894c21 --- /dev/null +++ b/viz/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "viz" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +graph = { path = "../graph" } \ No newline at end of file diff --git a/viz/src/lib.rs b/viz/src/lib.rs new file mode 100644 index 0000000..b40c78a --- /dev/null +++ b/viz/src/lib.rs @@ -0,0 +1,31 @@ +//! This library defines a binary format to store graph data such that +//! a client which understands the format can easily print the graph, +//! centered at any specific node, with any scope. The library also +//! provides functions to print graphs in this format. +//! +//! This way, one does not need a server to print and interact with +//! graphs. +//! +//! # Graph representation +//! +//! The library uses the [`Graph`][graph::Graph] trait from the crate +//! [graph]. Only the functions exposed from the trait are used by +//! this library. So the users can also implement the trait and then +//! print the graph data represented by other graph crates. + +extern crate graph; + +pub fn add(left: usize, right: usize) -> usize { + left + right +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn it_works() { + let result = add(2, 2); + assert_eq!(result, 4); + } +} -- cgit v1.2.3-18-g5258