之前看了轮子哥的文章 使用高阶函数开发语法分析器,便想用 js 重新实现一下,就有了这个轮子。
她是什么
有一点 combinator 的感觉,提供了几个函数可以让你解析用 BNF 描述规则的东西。
她能做什么
- tokenizer
- AST 虽然简陋了点也算是吧(
- calculator 四则运算是每个 parser 的必经之路
- rfc1738 校验器 按照 rfc 来构建校验器,妈妈再也不用担心我写的 validator 被人怼啦
- json 解析器 实现了 JSON.parse 比较拙劣,性能和原生方法差 300 倍 ( node10,node8 下通常是 500 倍)
她有哪些特点
短小(指代码
核心实现 150 行,还包括了许多辅助函数和类型
测试覆盖全面
-----------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
-----------|----------|----------|----------|----------|-------------------|
All files | 100 | 100 | 100 | 100 | |
parser.ts | 100 | 100 | 100 | 100 | |
-----------|----------|----------|----------|----------|-------------------|
她有哪些问题
有的文件使用了 ts,但实际数据的类型不是那个样子的(笑
如何食用
见 package.json