7 个版本
0.2.0 | 2023年4月17日 |
---|---|
0.1.1 | 2023年4月6日 |
0.1.0 | 2023年3月4日 |
0.0.3 | 2023年2月11日 |
#2764 in 解析器实现
每月 39 次下载
在 re-set-macros 中使用
12KB
222 行
重置
编译和运行时正则表达式集合解析器。
宏用法
use re_set_macros::find;
find!(fn find_identifier "[_[:alpha:]][[:word:]]*");
assert_eq!(find_identifier("foo bar"), Some((0, "foo")));
use re_set_macros::find;
find!(pub fn match_string
// Single quotes
r"'(\\'|.)*?'",
// Double quotes
r#""(\\"|.)*?""#,
// Multi-line strings
r"(?s)`(\\`|.)*?`"
);
let (_, string) = match_string(r#""Hello, world!""#).unwrap();
assert_eq!(string, r#""Hello, world!""#);
use re_set_macros::find;
find!(pub(crate) fn next_token
// 0: Punctuation
"[[:punct:]]+",
// 1: Words
"[[:word:]]+",
// 2: Whitespace
"[[:space:]]+"
);
let result = next_token("foo bar");
assert_eq!(result, Some((1, "foo")));
let (index, token) = result.unwrap();
match index {
0 => println!("Found punctuation: {token}"),
1 => println!("Found word: {token}"),
2 => println!("Found whitespace: {token}"),
_ => unreachable!(),
}
lib.rs
:
正则表达式解析器和编译器。
依赖关系
~2–3MB
~53K SLoC