aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs40
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);
+ }
}