aboutsummaryrefslogtreecommitdiff
path: root/macros/src/syntax/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'macros/src/syntax/mod.rs')
-rw-r--r--macros/src/syntax/mod.rs52
1 files changed, 52 insertions, 0 deletions
diff --git a/macros/src/syntax/mod.rs b/macros/src/syntax/mod.rs
new file mode 100644
index 00000000..c856617e
--- /dev/null
+++ b/macros/src/syntax/mod.rs
@@ -0,0 +1,52 @@
+use std::collections::{HashMap, HashSet};
+
+use syn::Ident;
+use quote::Tokens;
+
+pub mod parse;
+
+#[derive(Debug)]
+pub struct App {
+ pub device: Tokens,
+ pub idle: Idle,
+ pub init: Init,
+ pub resources: Resources,
+ pub tasks: Tasks,
+}
+
+#[derive(Debug)]
+pub struct Init {
+ pub path: Tokens,
+ pub resources: HashSet<Ident>,
+}
+
+#[derive(Debug)]
+pub struct Idle {
+ pub local: Resources,
+ pub path: Tokens,
+ pub resources: HashSet<Ident>,
+}
+
+#[derive(Debug)]
+pub struct Task {
+ pub kind: Kind,
+ pub priority: u8,
+ pub resources: HashSet<Ident>,
+}
+
+#[derive(Debug)]
+pub enum Kind {
+ Exception,
+ Interrupt { enabled: bool },
+}
+
+// $ident: $ty = $expr;
+#[derive(Debug)]
+pub struct Resource {
+ pub expr: Tokens,
+ pub ty: Tokens,
+}
+
+pub type Resources = HashMap<Ident, Resource>;
+
+pub type Tasks = HashMap<Ident, Task>;