From 86a360a3964ecb04a37c0424c76d7b43a9fd40fe Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Tue, 4 Jul 2017 11:26:11 -0500 Subject: rtfm! macro take 2 --- macros/src/syntax/mod.rs | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 macros/src/syntax/mod.rs (limited to 'macros/src/syntax/mod.rs') diff --git a/macros/src/syntax/mod.rs b/macros/src/syntax/mod.rs new file mode 100644 index 0000000..c856617 --- /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, +} + +#[derive(Debug)] +pub struct Idle { + pub local: Resources, + pub path: Tokens, + pub resources: HashSet, +} + +#[derive(Debug)] +pub struct Task { + pub kind: Kind, + pub priority: u8, + pub resources: HashSet, +} + +#[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; + +pub type Tasks = HashMap; -- cgit v1.2.3