diff options
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index 56e14c5..11357a9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,44 @@ +mod ast; mod checker; mod parser; +use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; +use tracing_tree::HierarchicalLayer; + fn main() { - println!("Hello, world!"); + tracing_subscriber::registry() + .with( + HierarchicalLayer::new(2) + .with_targets(false) + .with_bracketed_fields(true), + ) + .init(); + + let src = r#" + +let set X = record { .b : Bool, .n : Nat } + +let element x : X = { .b = true, .n = 41, .x = 3.14 } + +let signature Graph = theory { + .Node :: Set, + .Edge :: (s : Node) (t : Node) -> Set +} + +let instance natPoset :: Graph = { + .Node = Nat, + .Edge = for (s : Nat) (t : Nat), Bool +} + +let element node : set(natPoset .Node) = 7 +"#; + let programme = parser::parser::program(src); + + assert!(programme.is_ok()); + let programme = programme.unwrap(); + println!("Parsed:\n```\n{}\n```\n", programme); + + if let Err(e) = programme.check() { + println!("{}", e); + } } |
