1 unstable release
0.1.0 | Dec 6, 2021 |
---|
#14 in #tokenization
229 downloads per month
Used in 3 crates
(via ezno-parser)
5KB
65 lines
derive-finite-automaton
A procedural macro for building a finite automaton. Main use is for lexing multiple character wide tokens see derive-finite-automaton/examples/main.rs
.
Run example:
cd derive-finite-automaton
cargo run --example main
View example macro expansion (requires cargo-expand):
cd derive-finite-automaton
cargo expand --example main
Example
use derive_finite_automaton::{FiniteAutomata, FiniteAutomataConstructor};
#[derive(FiniteAutomataConstructor, Debug, PartialEq)]
#[automaton_mappings(
"{" => Tokens::OpenBrace,
"}" => Tokens::CloseBrace,
"=" => Tokens::Assign,
"=>" => Tokens::ArrowFunction,
"==" => Tokens::Equal,
"===" => Tokens::StrictEqual,
"." => Tokens::Dot,
"..." => Tokens::Spread,
)]
pub enum Tokens {
OpenBrace,
CloseBrace,
ArrowFunction,
Equal,
StrictEqual,
Assign,
Dot,
Spread,
}
Dependencies
~0.7–1MB
~26K SLoC