blob: 11357a9ce71f30461b0d024980b24249ce4c6cf3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
mod ast;
mod checker;
mod parser;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
use tracing_tree::HierarchicalLayer;
fn main() {
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);
}
}
|