(自己动手开发自己的语言练手级应用)JSON(JavaScript Object Notation) 产生式(BNF)

这篇具有很好参考价值的文章主要介绍了(自己动手开发自己的语言练手级应用)JSON(JavaScript Object Notation) 产生式(BNF)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 写自己的开发语言时,很多人都会拿JSON当第一个练习对象

开源net json FJSON 解析工具https://dbrwe.blog.csdn.net/article/details/107611540?spm=1001.2014.3001.5502

<json> ::= <object> | <array>
<object> ::= "{" [ <members> ] "}"
<members> ::= <pair> { "," <pair> }
<pair> ::= <string> ":" <value>
<array> ::= "[" [ <elements> ] "]"
<elements> ::= <value> { "," <value> }
<value> ::= <string> | <number> | <object> | <array> | true | false | null
<string> ::= '"' characters '"'
<number> ::= integer | integer "." fraction | integer exponent
<characters> ::= ""
              | <character> <characters>
<character> ::= <any-Unicode-character-except-"-or-\-or-control-character>
<integer> ::= <digit> { <digit> }
<fraction> ::= "." <digits>
<exponent> ::= ("e" | "E") ["+" | "-"] <digits>
<digits> ::= <digit> { <digit> }
<digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

以上是JSON的简化产生式表示形式。其中,<json>是最顶层的规则,可以是一个对象或一个数组。<object>表示一个对象,由一对大括号包围,内部包含零个或多个成员(键值对)。<members>表示成员列表,每个成员之间用逗号分隔。<pair>表示一个键值对,由键(字符串)和值组成。<array>表示一个数组,由一对方括号包围,内部包含零个或多个元素。<elements>表示元素列表,每个元素之间用逗号分隔。<value>表示一个值,可以是字符串、数值、对象、数组,或者是预定义的字面量值(true、false、null)。<string>表示一个字符串,由双引号包围。<number>表示一个数值,可以是整数、带小数部分的数或指数形式的数。<characters>表示字符串中的字符序列,<character>表示任意Unicode字符(排除双引号、反斜杠和控制字符),<integer>表示一个整数,<fraction>表示小数部分,<exponent>表示指数部分,<digits>表示数字序列,<digit>表示0到9之间的数字。

在产生式(BNF)中,花括号{}表示其中的内容是可选的。具体来说,{}用于表示一个重复出现零次或多次的语法元素。在<members><elements>和其他规则中使用花括号,表示可以有零个或多个对应的成员、元素或其他语法元素。

例如,在JSON的产生式中,<members>的定义为<pair> { "," <pair> },其中"," <pair>部分被放在花括号中。这意味着在一个对象中,可以包含零个或多个键值对,并通过逗号进行分隔。当存在多个键值对时,逗号后面必须跟着下一个键值对,但末尾的逗号是可选的。如果没有键值对,则花括号内部的内容为空,即零次重复。

CBScript 自定义脚本语言(源代码官网)https://blog.csdn.net/zanfeng/article/details/116431758?spm=1001.2014.3001.5501 CBScript 为自己的软件增加脚本编写功能并自定义APIhttps://blog.csdn.net/zanfeng/article/details/120029090?spm=1001.2014.3001.5501文章来源地址https://www.toymoban.com/news/detail-496184.html

到了这里,关于(自己动手开发自己的语言练手级应用)JSON(JavaScript Object Notation) 产生式(BNF)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript 练手小技巧:HTML5 的 dialog 标签制作对话框

    对话框,在应用中常常用来做 信息提示、特定操作 (如,登录、删除信息等)。 以前创建对话框,需要用 div 标签去模拟,或者使用一些框架、插件,如 artDialog 、 boostrap 等,去创建 对话框 。 如:使用 div 标签去模拟对话框  特定的功能还需要自己编写 JavaScript 代码,详见

    2024年01月20日
    浏览(30)
  • 自己动手写一个加载器

    当在 linux 命令行中 ./ 运行一个程序时,实际上操作系统会调用加载器将这个程序加载到内存中去执行。为了探究加载器的行为,今天我们就自己动手写一个简单的加载器。 加载器的工作原理: 从磁盘读取 bin 文件到内存,(bin 文件包含的是 CPU 可以直接执行的指令) 跳转到

    2024年02月05日
    浏览(39)
  • 自己动手写CPU——第一篇

    从本章开始将一步一步实现教学版 openMIPS处理器。首先介绍系统的设计目标,其中详细说明了openMIPS处理器计划实现的5级流水线。 openmips 设计的目标如下: 五级流水线,分别是:取指、译码、执行、访存、回写 哈佛结构。分开的指令和数据接口 32个32位整数寄存器 大端模式

    2023年04月09日
    浏览(32)
  • 自己动手写Docker学习笔记

    本文为《自己动手写 Docker》的学习,对于各位学习 docker 的同学非常友好,非常建议买一本来学习。 书中有摘录书中的一些知识点,不过限于篇幅,没有全部摘录 (主要也是懒) 。项目仓库地址为:JaydenChang/simple-docker (github.com) 1.1 kernel kernel (内核) 指大多数操作系统的核心部

    2024年02月05日
    浏览(33)
  • 自己动手绕线圈电感详细计算公式

    加载其电感量按下式计算:线圈公式 阻抗(ohm)=2 3.14159 F(工作频率) 电感量(mH),设定需用360ohm阻抗,因此:电感量(mH)=阻抗(ohm)÷(2 3.14159)÷F(工作频率)=360÷(2 3.14159)÷7.06=8.116mH 据此可以算出绕线圈数: 圈数=[电感量 {(18 圈直径(吋))+(40 圈长(吋))}]÷圈直径(吋) 圈数=[8.116*{(18 2.047)+

    2024年02月17日
    浏览(23)
  • 自己动手实现网页版的远程桌面

    因为一些原因,小编需要使用远程桌面软件,但小编实在穷,所以使用的是免费版的向日葵。就在前几天,免费版的向日葵莫名其妙崩了(各种重启都没用),虽然之后通过升级这种高级手段又重新可以用了,但是这在我幼小的心灵上留下了创伤,所以,我决定自己手写一个

    2023年04月14日
    浏览(41)
  • python模块: pygame(自己动手写游戏)

    目录 一、pygame的安装  二、pygame基础操作 1.基本窗体设置 2.surface组件  3.event事件 一、pygame的安装 在pycharm 左下角的终端上输入指令pip install pygame,按下回车键执行下载,推荐下载到虚拟环境上,即路径前方带有(venv)。或者不使用pycharm,在控制窗口输入执行该命令也可以(控

    2024年03月21日
    浏览(39)
  • 详解自己动手添加一个函数实现任意字段调用

    是否遇到过想调用某些自定义字段,却发现dedecms的标签底层模板字段不包括这个字段呢?这就大大限制了灵活性,但dede也不可能让所有字段都允许调用的,那样就会大大降低系统效率,所以今天分享的是一个比较完美解决这个问题的方法,配合dede标签,几乎可以说没有什么

    2024年02月02日
    浏览(82)
  • 开发语言漫谈-JavaScript

           JavaScript、Java名字很相近,但它们没有任何亲缘关系,是由不同公司开发的编程语言。Java由Sun公司(后被Oracle收购)开发,JavaScript最初是由Netscape公司开发的(当年浏览器的霸主)。JavaScript最初的名字是 LiveScript,Netscape将其命名为 JavaScript,无非是蹭 Java流量。当

    2024年04月16日
    浏览(37)
  • QT练手小项目-——天气播报小狗(ui展示分析,构造实现,json格式数据分析,界面交互,天气图标处理,小狗语音)

    前言         经过之前一段时间的QT学习,做出一个小软件来总结自己掌握关于qt的知识点。网络上有许多免费的天气接口(api),有xml格式的,也有json格式的。具体xml和json有什么区别,这里我就不去深究了,我们这里用的是一个json格式的数据,所以 重点是对json格式的数据

    2023年04月17日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包