4 个版本
0.3.4 | 2020年4月18日 |
---|---|
0.3.3 | 2020年4月5日 |
0.3.2 | 2020年4月1日 |
0.3.1 | 2020年4月1日 |
#22 in #latin
80KB
2K SLoC
解析器
描述
解析器组合库。使用规则,您可以使用任何语言的语法。这里有一些常见的规则,例如“latin”或“any”。还有规则组合器:“or”,“cat”,“range”等等。
常见规则
类型 | 匹配 | 构造函数 |
---|---|---|
dec | 0...9 |
dec() |
Bin | 0 或 1 |
bin() |
Oct | 0...7 |
oct() |
Hex | 0...9 或 A...F |
hex() |
Space | |
space() |
White | \r\n 或 或 \n 或 \r 或 \t |
white() |
Whites | 多次应用 White |
whites() |
Nl | \r\n 或 \n 或 \r |
nl() |
Latin | a...z 或 A...Z |
latin() |
Any | 任何字符 | any() |
End | 检查剩余输入是否为空 | end() |
组合器
类型 | 描述 | 运算符 / 构造函数 |
---|---|---|
Fst | 解析 x 和 y,然后返回 x | x<<y |
Snd | 解析 x 和 y,然后返回 y | x>>y |
Or | 解析 x 或 y | x|y |
Cat | 解析 x 和 y,然后连接结果 | x.cat(y) |
AndThen | 解析 x,然后将结果应用于 f 并解析它 | x.and_then(f) |
OrElse | 解析 x 或将错误应用于 f 并解析它 | x.or_else(f) |
CharRange | 解析字符范围 | char_range(a..=b) |
Not | 解析 x 并反转结果 | !x |
Opt | 将规则 x 设置为可选并返回 Option |
x.opt() |
OrDefault | 将规则 x 设置为可选并返回默认值 | x.or_default() |
Pred | 将谓词 p 应用于字符并返回它如果为真 | x.pred(p) |
Range | 多次解析 x | x.range(0..n) |
Until | 解析 x 直到 y | x.until(y) |
Ret | 总是返回值 v | ret(v) |
RetErr | 总是返回错误 e | ret_err(e) |
Map | 解析 x,然后应用函数 f 到成功的结果 | x.map(f) |
MapErr | 解析 x,然后对错误结果应用函数 f | x.map_err(f) |
进入 | 解析 x 并将结果转换为 Type |
进入::<类型>(x) |