2 个不稳定版本
0.2.0-alpha | 2023年2月16日 |
---|---|
0.1.0-alpha | 2023年2月16日 |
#195 在 解析工具 中
13KB
275 行
parseme
Parseme 是一个简单的解析器组合框架,它利用了 Rust 的类型系统。
示例
使用 parseme::xid
通过 Unicode XID 进行的基本标识符解析器(需要 xid
功能,默认启用)。
use parseme::Source;
fn parse_iden<'a>(input: &mut Source<'a>) -> Result<&'a str, ()> {
let start_pos = input.pos();
parseme::iter::next_if(input, parseme::xid::is_start).ok_or(())?;
parseme::iter::advance_while(input, parseme::xid::is_continue);
Ok(&input.src()[start_pos..input.pos()])
}
fn main() {
let ident1 = "hello";
let ident2 = "hello123";
let bad1 = "123";
let bad2 = "_ident";
assert_eq!(parse_iden(&mut Source::new(ident1)), Ok("hello"));
assert_eq!(parse_iden(&mut Source::new(ident2)), Ok("hello123"));
assert_eq!(parse_iden(&mut Source::new(bad1)), Err(()));
assert_eq!(parse_iden(&mut Source::new(bad2)), Err(()));
}
lib.rs
:
Parseme 的 Unicode XID 支持。