首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
Coding
V2EX  ›  JavaScript

使用高阶函数构造自己的校验器

  •  2
     
  •   azh7138m · 308 天前 · 2444 次点击
    这是一个创建于 308 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Github 传送门

    之前看了轮子哥的文章 使用高阶函数开发语法分析器,便想用 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

    第 1 条附言  ·  308 天前

    全是收藏,没有star,感觉被嫖了,没给钱 被白嫖

    3 回复  |  直到 2019-02-08 16:56:01 +08:00
        1
    Actrace   308 天前
    高阶领主表示你很聪明,赞赏了你。
        2
    qdwang   308 天前 via iPhone
    春节期间还在努力学习练习,乃我辈楷模,佩服!
        3
    azh7138m   308 天前
    @qdwang 春节只补充了测试(
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1700 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 00:55 · PVG 08:55 · LAX 16:55 · JFK 19:55
    ♥ Do have faith in what you're doing.