aboutsummaryrefslogtreecommitdiff
path: root/macros/src/syntax/mod.rs
diff options
context:
space:
mode:
authorGravatar Jorge Aparicio <jorge@japaric.io> 2017-07-04 11:26:11 -0500
committerGravatar Jorge Aparicio <jorge@japaric.io> 2017-07-04 11:26:11 -0500
commit86a360a3964ecb04a37c0424c76d7b43a9fd40fe (patch)
treecbf0ebee17a588f8f004bdd27e590ee6c958761b /macros/src/syntax/mod.rs
parent2bf5401439df4494b33ef87201ee013eb1f167e8 (diff)
downloadrtic-86a360a3964ecb04a37c0424c76d7b43a9fd40fe.tar.gz
rtic-86a360a3964ecb04a37c0424c76d7b43a9fd40fe.tar.zst
rtic-86a360a3964ecb04a37c0424c76d7b43a9fd40fe.zip
rtfm! macro take 2
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>;