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

    PEG.js学习笔记

    本文作者:IMWeb 黄龙 原文出处:IMWeb社区 未经同意,禁止转载 PEG.js可以做什么? PEG.js 是一个JavaScript的表达式语法解析器,它使您能够轻松地建立复杂的数据或计算机程序语言的快速分析器。 function(a){ return a>3&&a<9; }).reduce(function(a,b,c,d){ return a+b; }); console.log(sum);//25 由于PEG.js

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

    PEG.js学习笔记

    本文作者:IMWeb 黄龙 原文出处:IMWeb社区 未经同意,禁止转载 PEG.js可以做什么? PEG.js 是一个JavaScript的表达式语法解析器,它使您能够轻松地建立复杂的数据或计算机程序语言的快速分析器。 function(a){ return a>3&&a<9; }).reduce(function(a,b,c,d){ return a+b; }); console.log(sum);//25 由于PEG.js

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

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

    认识 PEG.js PEG.js 是一个简单的 JavaScript 解析器生成器,可以生成具有出色错误报告的快速解析器。 这也是 PEG.js 的特性之一,它能准确的给出匹配表达式的错误。 { return parseFloat(text()); } 到这里就把 PEG.js 中才有的表达式结合 json.pegjs 过了一遍,了解完它们的基本用法。 总结 先是了解完解释器和编译器的定义以及它们的区别,让我们知道了 PEG.js 是一个 JavaScript 的解析器生成器。 总而言之,写一个编译器,无非就 3 件事: 基于输入字符串做解析表达式匹配(正则匹配); 基于生成的结果做转换; 输出结果; PEG.js 只是简化了我们去执行上述动作的流程。

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

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

    上篇我们了解了 PEG.js 的基础使用,忘记的童鞋建议复习一下,对于本文的食用效果会更佳哦! 光说不练,等于白学。所以本文来实现一个编译器(瞎搞、玩具、欢乐)。 因为本文重点是编译逻辑,其他字段都可以基于 PEG.js 的 action 去添加,所以不会详细讲解。 下面我们就来实现上图中的 zh-template-compiler。 PEG.js 则可以直接通过规则去匹配; 组件的属性匹配;能够将模板中的 props 识别成 ast 中的 name 和 value 的形式,并且能够区分静态属性和动态属性(v-bind);对于复杂类型的 vue2中是通过栈去维护的这个关系,可以看到 PEG.js 的处理更加简洁。 通过这个练习,相信你对 PEG.js 的基础掌握得更加熟练,也能够利用它去解决日常开发中的一些问题。

    70820编辑于 2022-06-16
  • 来自专栏QQ音乐前端团队专栏

    聊聊PegJS

    在开发前端BFF框架的时候,需要将团队后台使用的JCE协议(类似ProtoBuff协议)转换成nodejs对应的语法,这里参考@tencent/jce2node-cli的实现,使用PEG.js解析生成AST ,下面就来介绍一下PEG.js是如何进行解析的? PEG.js是一个JavaScript的词法解析器,可以用来处理复杂的数据或计算机语言,并轻松构建转换器、解释器、编译器和其他工具。 jce.png 参考文献: Intro to Peg.js documentation#grammar-syntax-and-semantics

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

    2021 TWeb 腾讯前端技术大会精彩回顾(附PPT)

    我们来看一下腾讯问卷实现的 DSL 我们来简单了解下实现原理: 通过使用解析器生成器将 DSL 翻译成可执行的语句, 腾讯问卷使用了 PEG.js 来看一个案例, 如何通过 DSL 表述两分钟前 : 来看一下基于 peg.js 的实现: 可以看到, 有了 PEG.js, 我们不需要了解编译原理, 就可以很好地完成一个简单的 DSL 语言的编写.

    1.4K30发布于 2021-11-05
  • 来自专栏Rust语言学习交流

    从Rust到远方:PHP星系

    我想提醒您,这个实验的第一个目标是解决原始PEG.js解析器的性能问题。 对于PHP,我们使用phpegjs:它读取为PEG.js编写的语法并将其编译到PHP。

    1.5K40发布于 2019-07-09
  • 来自专栏C++ 动态新闻推送

    C++ 动态新闻推送 第32期

    mdarray2<int, 2> a{}; a[1, 1] = 42; assert(0 == (a[0, 0])); assert(42 == (a[1, 1])); } 试着用 PEG.js

    67210发布于 2021-10-13
  • 来自专栏phodal

    如何设计领域特定语言,实现终极业务抽象?

    支持主流的语言 Peg.js。JavaScript Pest。Rust Lalrpop。Rust 我还是比较习惯用 Antlr,支持的语言较多。

    1.7K52发布于 2021-06-10
  • 来自专栏腾讯技术工程官方号的专栏

    手写一个解析器

    答案是有的,例如 C 语言有 Bison 框架,JS 上选择就更多了,你可以选择 Jison、parsimmon、PEG.js 、Nearley 等,本文则基于使用人数较多的 Nearley 框架。

    1.5K41发布于 2020-05-27
  • 来自专栏Rust语言学习交流

    从Rust到远方:WebAssembly 星系

    下面的表格展示了Gutenberg项目纯Javascript解析器(基于PEG.js实现)和本文的项目:Rust编译成WebAssembly二进制方案的一个基准测试对比结果: 文件 Javascript

    1.8K20发布于 2019-07-30
  • 来自专栏Nodejs技术栈

    Github 4 万 Star!最全面的 Node.js 资源汇总推荐

    PostCSS - CSS 解析、压缩工具 JSONStream - 流式处理 JSON.parse 和 stringify csv-parser - 旨在比其他任何工具都快的流式 CSV 解析器 PEG.js

    4.7K31发布于 2021-01-13
领券