diff options
Diffstat (limited to 'macros/src/syntax/mod.rs')
-rw-r--r-- | macros/src/syntax/mod.rs | 52 |
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>; |