1个稳定版本

1.0.0 2024年6月6日

8#wag


3 个crate中(通过 wagon-parser)使用

Apache-2.0

67KB
1K SLoC

WAGon 词法分析器

WAGon DSL的词法分析器。


lib.rs:

WAGon 词法分析器

提供WAGon DSL的词法分析器,以及可以在运行时切换词法分析器的辅助迭代器。你可能最关心的可能是LexerBridgeTokens

示例

let s = r#"
meta: "data";
============
S -> A;
"#;
use wagon_lexer::{Tokens, LexerBridge, LexResult};
use wagon_ident::Ident;

let lexer = LexerBridge::new(s);
let tokens: Vec<LexResult> = lexer.collect();
assert_eq!(tokens, vec![
Ok(Tokens::MetadataToken(Metadata::Identifier("meta".into()))), 
Ok(Tokens::MetadataToken(Metadata::Colon)),
Ok(Tokens::MathToken(Math::LitString("data".to_string()))),
Ok(Tokens::MathToken(Math::Semi)),
Ok(Tokens::MetadataToken(Metadata::Delim)),
Ok(Tokens::ProductionToken(Productions::Identifier(Ident::Unknown("S".to_string())))),
Ok(Tokens::ProductionToken(Productions::Produce)),
Ok(Tokens::ProductionToken(Productions::Identifier(Ident::Unknown("A".to_string())))),
Ok(Tokens::ProductionToken(Productions::Semi))
])

依赖项

~4.5MB
~82K SLoC