首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏玩转全栈

    一文打透前端研发需要了解的DSL

    另外一个也是 js 写的 ,叫做 jison 。这两个工具都是用来解析 DSL 的,你可以根据自己的需求选择合适的工具。好的,下面我就来一个实际的案例了。 这里就以 jison 为例,来编写 DSL 的语法规则。jison 是一个 JavaScript 的解析器生成器,它可以从类似 BNF 的语法描述中生成一个解析器。 以下是一个基于你提供的 DSL 示例的简化的 jison 语法规则:/* Lexical rules */%lex%%\s+                   /* skip whitespace *  }"in"                  { return 'IN'; }">="                  { return 'GE'; } // 这里匹配采取的是贪婪匹配,可以参考 jison 这个文件可以通过 jison 的命令行工具来编译成一个 JavaScript 文件,然后你可以在你的代码中使用这个文件来解析你的 DSL。那么解析后的结果是什么呢?

    6.4K21编辑于 2024-04-08
  • 来自专栏玩转全栈

    懂前端的你也可以轻松定义自己业务的DSL

    在前端应用方面,Jison 可以用于实现自定义的模版引擎,例如类似于 Handlebars 或者 Mustache 的模版引擎。 通过使用 Jison,开发人员可以定义自己的模版语法规则,然后将其转换为解析器,从而实现对自定义模版语法的支持。 此外,Jison 还可以用于实现自定义的 DSL(领域特定语言),例如在前端应用中实现一些特定的业务逻辑,例如表单验证、数据格式化等等。 通过使用 Jison,开发人员可以定义自己的 DSL 语法规则,然后将其转换为解析器,从而实现对自定义 DSL 的支持。 jison有很多demo可以供参考,比如 写一个计算器 https://gerhobbelt.github.io/jison/try/图片要实现这个计算器,你的代码不再是手写解析算术表达式,手写语法树解析

    3.6K41编辑于 2023-03-12
  • 来自专栏后端开发随笔

    【收藏】在JavaScript中解决超过Long型数值的精度问题

    详见:【解决方案】jison解决JS处理后台返回的Long型数据精度丢失

    1.6K20发布于 2019-12-20
  • 来自专栏程序人生

    Policy Engine 的前世今生

    我们知道,在 C 的领域,有 flex / bison(大学期间编译原理使用的 lex / yacc 的升级版),由于我们的系统是 nodejs 构建的,直接用有诸多不便,所以我们选用了 jison — 用 jison 描述 BNF(严格说,是 EBNF)很容易,定义好 lex 后,就可以定义 grammar 了。关于这个主题,我之前写过文章,见:如何愉快地写个小parser。在这里就不详述了。 jison 会把 EBNF 编译成 javascript 文件,然后我们包装一个简单的接口(主要考虑易用性),就可以让系统的其他部分调用了。它的效率很高,很好地支撑起了我们的服务。 time policy check 100000 21.12 µs/op 写了两个测试例和线上的环境对比一下,500 个 policy,在完全没 cache 的情况下,nodejs 的基于 JISON

    1.7K140发布于 2018-03-29
  • 来自专栏程序人生

    如何愉快地写个小parser

    好吧,接下来我们讲讲jison。我想你应该猜到了,这货是javascript bison,bison在javascript上的变态。先来个解析SQL里的 create table 的例子。 嗯,实现这个只需要写一个jison的语法文件(和flex/bison相似),然后用jison编译即可: ? (仅包含了语法分析部分,略过了词法分析) ? (在nodejs下运行) ? 用javascript/jison做parser有什么好处呢? 如果你想定义一门语言生成javascript(我不建议你干这个),可以参考coffeescript,它 也使用了jison。 接下来我们讲一下另一个神器 antlr4。

    3.8K100发布于 2018-03-28
  • 来自专栏Java成神之路

    Markdown_02_作图

    Completed task in the critical line :crit, done, 2014-01-06,24h Implement parser and jison Completed task in the critical line :crit, done, 2014-01-06,24h Implement parser and jison

    1.2K20发布于 2019-05-09
  • 来自专栏kali blog

    基于MQTT协议微信小程序 支持小车接入 完全开源

    需要注意的是,当收到jison为{"L":1}时,我们需要做闪烁效果,模拟左转向效果。因此,需要(高-低-高-低……)每隔0.5s转换。当收到关灯{"L":0}时,直接低电平关闭即可。

    20310编辑于 2026-02-03
  • 来自专栏人工智能与演化计算成长与进阶

    markdown 入门简明指南

    Completed task in the critical line :crit, done, 2014-01-06,24h Implement parser and jison Completed task in the critical line :crit, done, 2014-01-06,24h Implement parser and jison

    1.2K50发布于 2020-08-14
  • 来自专栏机器学习AI算法工程

    keras版Mask-RCNN来训练自己的目标检测数据集

    AI项目体验地址 https://loveai.tech 6、把打标后的jison文件转换为对应的五个文件。其中的代码文件是:labelme_json_to_dataset.py,使用的代码是: ?

    1.7K20发布于 2020-06-28
  • 来自专栏phodal

    如何在业务代码中提升:创建领域特定语言

    以我几次、有限的创建 DSL 的经历来说,诸如:stepping,我觉得外部 DSL 并不容易实现——虽然已经有了 Flex 和 Bison(在 JavaScript 世界里,有一个名为 Jison 的实现 如我之前设计用于 DDD 的 stepping 看上去就像是一个配置文件,而我是使用 Jison 写了自己的语法分析: domain: 库存子域 aggregate: 库存 event: 库存已增加 event

    86710发布于 2018-07-20
  • >>运维管理:Typora工具之画图

    Completed task in the critical line :crit, done, 2014-01-06,24h Implement parser and jison

    1.1K30编辑于 2023-10-10
  • 来自专栏小脑斧科技博客

    惊呆!原来 markdown 的画图功能如此强大!

    tasks Completed task in the critical line :crit, done, 2014-01-06,24h Implement parser and jison

    12.2K20编辑于 2022-06-27
  • 来自专栏Arya好奇猫

    《中国数据库前世今生》观影——2010年代/大数据席卷市场

    noSQL的特点:1.快,响应很快;2.缓存出来,用户操作的响应就很快,可能一个响应多2ms看起来不多,但是如果是200个操作呢,这样时间累计起来就很多了;MongoDB:json进jison出,面向对象的形式

    31020编辑于 2024-08-06
  • 来自专栏程序人生

    Tubi 为什么?

    我们用 nodejs 和 jison 开发了一个 rule parser(关于如何用 jison,见我的文章 如何愉快地写个小parser),性能不错,但没有特别本质的飞跃,所以我们另辟蹊跷,研发了一个

    1.2K00发布于 2018-07-30
  • 来自专栏phodal

    如何用代码为代码建模?

    寻找语法解析器及现成语法 市面上已经有一系列现成的词法解析器、语法解析器: JavaCC Lex 和 Yacc Flex 和 Bison Jison (for JavaScript) Parsec Antlr

    1.7K10发布于 2020-03-12
  • 来自专栏机械之心

    Markdown

    Critical tasks Completed task in the critical line :crit, done, 2014-01-06,24h Implement parser and jison

    1.1K10编辑于 2023-04-07
  • 来自专栏流川疯编写程序的艺术

    markdown绘图插件----mermaid简介

    tasks Completed task in the critical line :crit, done, 2014-01-06,24h Implement parser and jison

    5.2K40发布于 2019-01-18
  • 来自专栏流川疯编写程序的艺术

    markdown绘图插件 ---- mermaid简介

    tasks Completed task in the critical line :crit, done, 2014-01-06,24h Implement parser and jison

    5.4K31编辑于 2023-10-13
  • 来自专栏phodal

    如何构建一个在线绘图工具:Feakin 是如何设计与构建的?

    Mermaid 使用 Jison 作为解析器,然后将其转换为不同的图模型,如流、时序等,再使用 graphlib、dargre 进行布局,最后使用 dagre-d3、d3 进行渲染。

    2.1K30编辑于 2022-08-29
  • 来自专栏腾讯技术工程官方号的专栏

    手写一个解析器

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

    1.5K41发布于 2020-05-27
领券