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

news/2023/11/28 17:12:40

 写自己的开发语言时,很多人都会拿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


http://www.ppmy.cn/news/520403.html

相关文章

Python列表 (超详细举例加讲解)

得之我幸&#xff0c;失之我命 文章目录 1.列表的值 2.列表的定义 3.下标 4.列表长度 5.列表的加法和乘法 6.列表切片 7.操作方法&#xff08;一些基础的函数&#xff09; &#xff08;1&#xff09;append——向列表末尾添加元素 &#xff08;2&#xff09;insert——…

书架(一)

问题描述 Farmer John最近为奶牛们的图书馆添置了一个巨大的书架&#xff0c;尽管它是如此的大&#xff0c;但它还是几乎瞬间就被各种各样的书塞满了。现在&#xff0c;只有书架的顶上还留有一点空间。 所有N(1 < N < 20,000)头奶牛都有一个确定的身高H_i(1 < H_i &…

模拟电路系列文章-频率响应的描述

目录 概要 整体架构流程 技术名词解释 技术细节 1.为什么受频率的影响 2.频率响应 小结 概要 提示&#xff1a;这里可以添加技术概要 电容和电感是储能元件&#xff0c;对不同频率的交流信号&#xff0c;它们具有不同的感抗或者容抗。虽然它们不消耗功率&#xff0c;但同电阻一…

新品预告:1月1日富而喜悦一年一渡冬季新品发布即将开启!

1月1日消息&#xff1a;在即将到来的富而喜悦一年一渡2023新年主题直播盛典的活动&#xff0c;富而喜悦人不但为全球摆渡人带来了超给力的视听盛宴&#xff1b;据富而喜悦品牌创始人、财富流沙盘创作人唐乾九先生透露&#xff0c;今年直播盛典期间&#xff0c;我们还会给大家带…

新品爆款打造流程与操作步骤--电商人必看

一直想为共同奋斗的电商人做一些事情&#xff0c;从最初的小白到现在9年电商的老鸟&#xff0c;中间踩过很多坑&#xff0c;但最终还是坚持下来。希望可以帮助到更多点商人少走弯路&#xff0c;少踩坑。今天分享新品爆款打造流程与操作步骤&#xff0c;思维导图非常大&#xff…

SD NAND新品尝试

SD NAND新品尝试 最近&#xff0c;拿到了来自深圳雷龙公司的芯片&#xff0c;是一颗SD NAND。确实这是我第一次知道&#xff0c;想必也有很多小伙伴和我一样。让我们来一起了解一下。 SD NAND介绍 CSNP4GCR01-AMW 不用写驱动程序自带坏块管理的NAND Flash&#xff08;贴片式T…

星巴克中国2022春日限定新品上市

上海2022年3月1日 /美通社/ -- 春&#xff0c;是万物复苏的时节 -- 它是时光流动的真实踪迹&#xff0c;给予我们感知自然、择时而息的力量&#xff0c;在万象复苏中引发无限的诗情雅意。星巴克在绵绵春雨和和煦春风之中&#xff0c;推出全新春日限定系列新品&#xff0c;用茶和…

ipad pro 2021有什么新亮点?

iPad Pro 2021 主要的亮点有三个。 1、M1芯片 这代iPad Pro最大的看点就是M1芯片&#xff0c;可以说是革命性的突破。M1芯片的加入&#xff0c;给这代iPad Pro带来了性能上的巨大飞跃&#xff0c;使其成为同类产品中最快的设备。 8核CPU设计采用世界上最快的低功耗硅CPU核&a…

虹科新品 | 什么是光纤微动开关?(上)

01 什么是光纤微动开关 # 光纤微动开关结合了机械开关和光中断器的优点以及光纤波导的非金属性 光纤微动开关有一个确定的机械开关点&#xff0c;提供触觉反馈 光中断器没有电子机械部件&#xff0c;因此具有高可靠性 光纤是非金属的&#xff0c;它的信号损失几乎为零&#x…

新品营销,如何找到更具“确定性”的答案?

主笔&#xff1a;邹小困 研究员&#xff1a;邹小困、姜衔、李佳静 出品&#xff1a;增长黑盒研究组 「概述」 随着各行业和赛道越来越“内卷”&#xff0c;品牌越来越注重确定性的增长方法论。我们观察到&#xff0c;在新品营销这一重要环节中&#xff0c;小红书的KFS内容营销组…

虹科新品| HK-TrueNAS企业存储

一、HK-TrueNAS概述 HK-TrueNAS 是一种统一存储阵列&#xff0c;提供混合和全闪存配置&#xff0c;以前所未有的价格提供全面的功能集和高达 10.5PB 的容量。TrueNAS 全闪存存储阵列为以闪存为中心的数据中心提供了理想的统一数据存储。每个混合和全闪存 TrueNAS 系统都使用 Tr…

如何创建发布新品上市新闻稿

推出新产品对任何企业来说都是一个激动人心的时刻&#xff0c;但向潜在客户宣传并围绕您的新产品引起轰动也可能是一个挑战。最有效的方法之一就是通过发布新品上市新闻稿。精心制作的新闻稿可以帮助我们通过媒体报道、吸引并在目标受众中引起关注。下面&#xff0c;我们将讲述…

多线程之JUC

写在前面 本文一起看下jdk并发包的相关内容。 1&#xff1a;JUC包提供了哪些功能 先通过包结构看下JUC提供的功能&#xff1a; 接下来分别看下。 1.1&#xff1a;锁 JUC中的锁机制提供了比synchronized&#xff0c;wait/notify更加灵活的同步控制&#xff0c;在java.util.…

迈瑞麻醉机WATO数据对接

通过设备连接&#xff0c;解析通信数据包&#xff0c;解析hl7数据&#xff0c;得到设备当前检测的生理参数值。 通信过程中&#xff0c;断线自动重连&#xff0c;获取当前设备pid。 主要生理参数&#xff1a; EtCO2 FiCO2 EtN2O FiN2O MAC EtEnf FiEnf Pmean PEEP Pplat Ppea…

全球首套U-home智能家庭影院亮相

全球首套U-home智能家庭影院亮相 (2009-07-16 09:37:40) <script></script>标签&#xff1a; u-home 平板电视 家庭影院 投影机 朱俊钦 智能家居系统 智能家居产品 家居 分类&#xff1a;市场动态 电视、沙发、茶几……每家的客厅都大同小异&#xff0c;每家的布…

分贝测试软件哪个好 家庭影院,家庭影院DIY攻略 攻略篇 – 5.2 音频解码能力

○ 音频解码能力越强&#xff0c;声音越好听。 音频解码&#xff0c;就是将数字音频信号还原成模拟音频信号&#xff0c;但声音看不见摸不着&#xff0c;所以举大家都很熟悉的数码照片为例&#xff0c;可能会更好理解。 数码照片文件越大&#xff0c;图像越真实&#xff0c;比如…

上海迪士尼度假区迎来五周年;西门子医疗携手武汉协和成立医学影像后处理及人工智能示范中心 | 美通社头条...

要闻摘要&#xff1a;上海迪士尼度假区迎来五周年。西门子医疗全国首家医学影像后处理及人工智能示范中心启动。香格里拉集团与腾讯游戏、腾讯电竞联合定制的游戏电竞主题房正式发布。鱼鹰资产管理和翰森制药共同创立并孵化的博胜药业宣布成立。沃巴什谷资源美国气化厂改建项目…

an7062个引脚工作电压_马兰士PM711AV功放电路原理分析

马兰士PM711功放带杜比环绕声数字逻辑电路。该机由以下电路板组成:交流开机控制电源板.主板,环绕声及视频处理板、音量调理板及操作显示CPU控制一体板组成.该机音频信号流程如下图所示。音源信号通过QMOI微处理器控制切换开关IC选择信号源,通过(11),(30)脚分别输出L、R双…

进博抢先看 | 辉瑞、默沙东、强生、GSK、西门子医疗、蔡司、霍尼韦尔、江森自控、阿迪达斯、迪卡侬、乐高等将亮相第五届进博会...

美通社消息&#xff1a;第五届中国国际进口博览会&#xff08;进博会&#xff09;将于2022年11月5日至10日在国家会展中心&#xff08;上海&#xff09;举办。辉瑞、默沙东、强生、安进、美敦力、丹纳赫、因美纳、罗氏、葛兰素史克、赫力昂、拜耳、勃林格殷格翰、西门子医疗、蔡…

(十一)CSharp-LINQ(1)

一、LINQ 数据库可以通过 SQL 进行访问&#xff0c;但在程序中&#xff0c;数据要被保存在差异很大的类对象或结构中。由于没有通用的查询语言来从数据结构中获取数据。所以可以使用 LINQ 可以很轻松地查询对象集合。 LINQ 高级特性&#xff1a; LINQ 代表语言集成查询。LIN…
最新文章