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

MIT/Apache

80KB
2K SLoC

解析器

crates.io docs.rs

描述

解析器组合库。使用规则,您可以使用任何语言的语法。这里有一些常见的规则,例如“latin”或“any”。还有规则组合器:“or”,“cat”,“range”等等。

常见规则

类型 匹配 构造函数
dec 0...9 dec()
Bin 01 bin()
Oct 0...7 oct()
Hex 0...9A...F hex()
Space space()
White \r\n \n\r\t white()
Whites 多次应用 White whites()
Nl \r\n\n\r nl()
Latin a...zA...Z latin()
Any 任何字符 any()
End 检查剩余输入是否为空 end()

组合器

类型 描述 运算符 / 构造函数
Fst 解析 xy,然后返回 x x<<y
Snd 解析 xy,然后返回 y x>>y
Or 解析 xy x|y
Cat 解析 xy,然后连接结果 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)

无运行时依赖