普贤教程 › 包参考
parser 包
解析器组合子
| 项 | 值 |
|---|---|
| 包名 | parser |
| 版本 | 0.2.0 |
| 可用版本 | 0.1.0 / 0.2.0 |
| 入口 | parser.px |
| 分类 | 数据格式与编解码 |
| 文件数 / 行数 | 1 / 352 |
安装与引入
bash
pxpkg init # 首次 pxpkg add parser@0.2.0 pxpkg install
px
import parser所属分类教程:数据格式与编解码
公开接口
| 函数 | 参数 |
|---|---|
p_any | input, pos |
p_char | c |
p_str | s |
p_digit | input, pos |
p_letter | input, pos |
p_alnum | input, pos |
p_space | input, pos |
p_take_while | pred |
p_end | input, pos |
p_seq | parsers |
p_alt | parsers |
p_many | p |
p_many1 | p |
p_opt | p |
p_map | p, f |
p_between | openp, inner, closep |
p_sep_by | p, sep |
p_sep_by1 | p, sep |
p_ws | input, pos |
p_int | input, pos |
其余 9 个 def(内部与辅助,可直接调用但不属稳定接口)
| 函数 | 参数 |
|---|---|
p_errmsg | pos, msg |
ps_is_ws | c |
p_char_at | input, pos |
p_ident | input, pos |
ps_is_alnum_under | c |
p_parse_int | input, pos |
p_parse_float | input, pos |
p_parse_quoted | input, pos |
p_optional | input, pos, parser_fn |
包内说明(源码头注释)
text
============================================================ 普贤生态库:registry/parser —— 解析器组合子 ------------------------------------------------------------ 纯函数库(无 IO、无状态),编译(px build)与解释(px run)双模式一致。 约定:解析器 = 函数 (input, pos) → Ok([新pos, 值]) | Err(错误信息) 基本原语: p_char(c) / p_str(s) / p_any / p_digit / p_letter / p_alnum p_space / p_take_while(pred) / p_end 组合子: p_seq(parsers) → [值...](全部成功) p_alt(parsers) → 首个成功分支的值 p_many(p) / p_many1(p) → [值...](零次/一次以上) p_opt(p) → 值 或 null(不失败) p_map(p, f) → 转换结果 p_between(open, inner, close) p_sep_by(p, sep) / p_sep_by1(p, sep) p_ws → 跳过空白(永不失败) p_int → 有符号整数 说明: - 错误信息带位置("位置 N: ..."),alt 只保存最后分支的错误 - 解析器以函数值传递(闭包捕获按引用,M160 修复后三轨一致) ============================================================ ---- 内部 ---- 错误信息