Finite state machines in rust; bendns fork to add types.
Diffstat (limited to 'rust-fsm-dsl/src/parser.rs')
-rw-r--r--rust-fsm-dsl/src/parser.rs15
1 files changed, 6 insertions, 9 deletions
diff --git a/rust-fsm-dsl/src/parser.rs b/rust-fsm-dsl/src/parser.rs
index f1a9b67..81b59e0 100644
--- a/rust-fsm-dsl/src/parser.rs
+++ b/rust-fsm-dsl/src/parser.rs
@@ -1,3 +1,5 @@
+use crate::variant::Final;
+
use super::variant::Variant;
use proc_macro2::TokenStream;
use syn::{
@@ -6,7 +8,7 @@ use syn::{
*,
};
/// The output of a state transition
-pub struct Output(Option<Variant>);
+pub struct Output(Option<Final>);
impl Parse for Output {
fn parse(input: ParseStream) -> Result<Self> {
@@ -20,7 +22,7 @@ impl Parse for Output {
}
}
-impl From<Output> for Option<Variant> {
+impl From<Output> for Option<Final> {
fn from(output: Output) -> Self {
output.0
}
@@ -30,8 +32,8 @@ impl From<Output> for Option<Variant> {
/// trait is implemented for the compact form.
pub struct TransitionEntry {
pub input_value: Variant,
- pub final_state: Variant,
- pub output: Option<Variant>,
+ pub final_state: Final,
+ pub output: Option<Final>,
}
impl Parse for TransitionEntry {
@@ -120,7 +122,6 @@ pub struct StateMachineDef {
pub state_name: ImplementationRequired,
pub input_name: ImplementationRequired,
pub output_name: ImplementationRequired,
- pub initial_state: Variant,
pub transitions: Vec<TransitionDef>,
pub attributes: Vec<Attribute>,
}
@@ -168,9 +169,6 @@ impl Parse for StateMachineDef {
.or_else(|_| input.parse::<Path>().map(ImplementationRequired::No))
};
let state_name = i()?;
- input.parse::<Token![:]>()?;
- let initial_state = input.parse()?;
-
input.parse::<Token![=>]>()?;
let input_name = i()?;
input.parse::<Token![=>]>()?;
@@ -187,7 +185,6 @@ impl Parse for StateMachineDef {
state_name,
input_name,
output_name,
- initial_state,
transitions,
attributes,
})