1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
macro_rules! action { (| $self:tt, $input:ident | > $action_fn:ident ? $($args:expr),* ) => { $self.$action_fn($input $(,$args),*).map_err(ParsingTermination::ActionError)?; }; (| $self:tt, $input:ident | > $action_fn:ident $($args:expr),* ) => { $self.$action_fn($input $(,$args),*); }; ( @state_transition | $self:tt, $input:ident | > reconsume in $state:ident) => { $self.unconsume_ch(); action!(@state_transition | $self, $input | > --> $state); }; ( @state_transition | $self:tt, $input:ident | > - -> $state:ident) => { $self.switch_state(Self::$state); return Ok(()); }; ( @state_transition | $self:tt, $input:ident | > - -> dyn $state_getter:ident) => { { let state = $self.$state_getter(); $self.switch_state(state); } return Ok(()); }; }