Macro flexar::lexer

source ·
macro_rules! lexer {
    ([[$token_type:ident] $lext:ident, $current:ident $(, $label:tt)?] else $no_match:expr; token_types {$($variant:ident$(($varin_name:ident: $varin_type:ty))? => $fmt:expr;)*} $($first:tt$sep:tt$second:tt;)*) => { ... };
    (@sect $lext:ident $label:tt $current:ident $out:ident: ($($tail:tt)*)) => { ... };
    (@sect $lext:ident $label:tt $current:ident $name:ident: $char:tt) => { ... };
    (@sect $lext:ident $label:tt $current:ident $start:tt $child:ident {$($($code:block)? $($key:ident $param:tt $body:tt)?;)*}) => { ... };
    (@sect $lext:ident $label:tt $current:ident $char:tt >> ($action:expr)) => { ... };
    (@recur-sect1 $label:tt $out:ident $lext:ident $child:ident $char:tt) => { ... };
    (@recur-sect1 $label:tt $out:ident $lext:ident $child:ident $char:tt $($tail:tt)*) => { ... };
    (@det $child:ident $lext:ident $label:tt ck ($current:ident, $val:tt) {$($($code:block)? $($key:ident $param:tt $body:tt)?;)*}) => { ... };
    (@det $child:ident $lext:ident $label:tt if ($condition:expr) {$($($code:block)? $($key:ident $param:tt $body:tt)?;)*}) => { ... };
    (@det $child:ident $lext:ident $label:tt scope $name:ident {$($($code:block)? $($key:ident $param:tt $body:tt)?;)*}) => { ... };
    (@det $child:ident $lext:ident $label:tt done $var:ident ($($spec:expr)?)) => { ... };
    (@det $child:ident $lext:ident $label:tt update: ()) => { ... };
    (@det $child:ident $lext:ident $label:tt advance: $current:ident) => { ... };
    (@det $child:ident $lext:ident $label:tt advance: ()) => { ... };
    (@det $child:ident $lext:ident $label:tt set $var:ident $val:expr) => { ... };
    (@det $child:ident $lext:ident $label:tt mut $var:ident $val:expr) => { ... };
    (@det $child:ident $lext:ident $label:tt throw $err:ident ($position:expr $(,$spec:tt)?)) => { ... };
    (@det $child:ident $lext:ident $label:tt rsome $current:ident {$($($code:block)? $($key:ident $param:tt $body:tt)?;)*}) => { ... };
    (@det $child:ident $lext:ident $label:tt rsome ($current:ident, $while_label:tt) {$($($code:block)? $($key:ident $param:tt $body:tt)?;)*}) => { ... };
    (@det $child:ident $lext:ident $label:tt some $current:ident {$($($code:block)? $($key:ident $param:tt $body:tt)?;)*}) => { ... };
    (@det $child:ident $lext:ident $label:tt $invalid:ident $val:tt $var:tt) => { ... };
    (@value $current:ident [$val:literal]) => { ... };
    (@value $current:ident $val:literal) => { ... };
    (@value $current:ident $val:tt) => { ... };
}
Expand description

Creates a lexer