2 个版本
0.1.1 | 2023年3月22日 |
---|---|
0.1.0 | 2023年3月22日 |
#317 in 解析工具
26 每月下载次数
9KB
146 行
regex-tokenizer
一个基于正则表达式的分词器,具有最小化 DSL 来定义它!
用法
tokenizer! {
SimpleTokenizer
r"[a-zA-Z]\w*" => Identifier
r"\d+" => Number
r"\s+" => _
}
在函数中
...
let tokenizer = SimpleTokenizer::new();
...
SimpleTokenizer
将生成一个名为 SimpleTokenyzer_types
的 枚举
,包含 Identifier
和 Number
。类为 _
的正则表达式将被忽略;当找到不匹配指定正则表达式的子字符串时,分词将被视为失败。
当多个非忽略的正则表达式与输入匹配时,优先考虑定义的第一个。
调用 tokenizer.tokenize(...)
将返回一个迭代器,从查询中提取令牌。一个令牌由
{
value: String,
position: usize,
type_: SimpleTokenyzer_types,
}
position
将是令牌的第一个字符在查询中的位置。调用 .next()
如果没有更多令牌可提取,将返回 None
。
依赖项
~2.2–3.5MB
~55K SLoC