首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏QQ音乐前端团队专栏

    聊聊PegJS

    但是仅使用正则表达式来解析,会发现非常难以阅读,可维护性比较差,而PegJs 则是一种更加简便可维护的 parser 工具。 下面是基于PegJS语法的一个官方示例,它的语法有这样两个特点: PegJS的语法由一组规则组成,从上至下进行解析。 默认情况下,使用了+和* 匹配出的结果会返回一个数组,PegJS 提供在表达式中通过变量名和一个format函数来自定义返回值。 number = float / integer 为避免歧义,如果定义规则start = a / b,当输入即可以匹配a也可以匹配b,那么PegJS则优先使用a来进行解析。 interface.png 最后,将struct规则和interface规则进行整合后,就可以得到一个简单的Pegjs语法的JCE解析器了。

    1.8K40发布于 2021-04-19
  • 来自专栏IMWeb前端团队

    PEG.js学习笔记

    安装 Node.js npm install -g pegjs Browser bower install pegjs 生成解析器 pegjs xxx.pegjs 文法定义和语义 上面的都没有什么卵用。 exp1 "左侧表达式" = var ("," var)* {return text();} exp2 "右侧表达式" = .+ {return text();} 保存为lambda.pegjs pegjs lambda.pegjs 就会生成一个lambda.js的文件 在node里面我们就可以这样使用它 var lambda = require(".

    96920发布于 2019-12-03
  • 来自专栏IMWeb前端团队

    PEG.js学习笔记

    安装 Node.js npm install -g pegjs Browser bower install pegjs 生成解析器 pegjs xxx.pegjs 文法定义和语义 上面的都没有什么卵用。 exp1 "左侧表达式" = var ("," var)* {return text();} exp2 "右侧表达式" = .+ {return text();} 保存为lambda.pegjs pegjs lambda.pegjs 就会生成一个lambda.js的文件 在node里面我们就可以这样使用它 var lambda = require(".

    1.3K80发布于 2018-01-08
  • 来自专栏码农小余

    手摸手实现一个编译器(上)

    ,因为你要引入包 npm install pegjs 本文就只演示 CLI 去生成编译器的用法,JavaScript API 在官方文档中有说明,参数都是一致的。 /simple-arithmetics.pegjs 那么生成的解析器会以 middle 作为语法入口,我们测试一下: const { parse } = require('. /simple-arithmetics.pegjs 生成的解析器再来解析上述代码: const { parse } = require('. { return parseFloat(text()); } 到这里就把 PEG.js 中才有的表达式结合 json.pegjs 过了一遍,了解完它们的基本用法。 最后基于 json.pegjs 去详细分析了解析表达式的用法。

    1.2K10编辑于 2022-06-16
  • 来自专栏码农小余

    手摸手实现一个编译器(中)

    验证 最后,将上述规则生成编译器: npx pegjs -o zh-template-compiler.js src/zh-template-compiler.pegjs 文章开头的 生成的 AST

    70820编辑于 2022-06-16
  • 来自专栏前端精读评论

    66. 精读《手写 SQL 编译器 - 语法分析》

    另外也有一些根据文法自动生成 parser 的库,比如兼容多语言的 antlr4 或者对 js 支持比较友好的 pegjs

    1.8K30编辑于 2022-03-14
领券