1个稳定版本
1.0.0 | 2024年6月6日 |
---|
8 在 #wag 中
在 3 个crate中(通过 wagon-parser)使用
67KB
1K SLoC
WAGon 词法分析器
WAGon DSL的词法分析器。
lib.rs
:
WAGon 词法分析器
提供WAGon DSL的词法分析器,以及可以在运行时切换词法分析器的辅助迭代器。你可能最关心的可能是LexerBridge
和Tokens
。
示例
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