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

news/2024/4/15 13:50:02

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

相关文章

华硕win10键盘失灵_Win10笔记本键盘失灵怎么办 Win10键盘失灵解决方法【详解】...

相信现在已经有很多朋友都已经成功升级了win10正式版&#xff0c;不过最近有用户反映&#xff0c;升级Win10笔记本键盘失灵怎么办?下面迅维小编整理了一些常见的原因与解决办法&#xff0c;供大家参考尝试解决。 Win10笔记本键盘失灵的原因一 1、没有开启小键盘 很多笔记本都带…

华硕win10键盘失灵_win10笔记本键盘失灵怎么办_win10笔记本电脑键盘失灵一键修复教程...

大家都知道笔记本电脑都是自带有键盘的&#xff0c;然而近日有笔记本用户在升级到win10系统之后&#xff0c;使用键盘打字的时候&#xff0c;却出现键盘失灵的情况&#xff0c;导致键盘无法正常使用&#xff0c;这是怎么回事呢&#xff0c;针对win10笔记本电脑键盘失灵这个问题…

华硕win10键盘失灵_win10键盘失灵错乱的几种解决方法【图文】

电脑键盘是最常用的设备之一&#xff0c;打字都离不开它&#xff0c;许多小伙伴经常遇到键盘出现按键失灵和错乱的情况&#xff0c;比如打U变成4&#xff0c;I变成5&#xff0c;O变成6&#xff0c;J变成1&#xff0c;K变成2&#xff0c;L变成3&#xff0c;M变成0等现象。很多人…

璞华产业园区租赁运营平台,助力空间资产管理数字化转型!

{ 产业园区租赁运营平台 } 直面行业痛点 专注技术创新 点击输入图片描述&#xff08;最多30字&#xff09; 产业园区作为产业转型升级的重要载体&#xff0c;产业园区租赁运营也正迎来新的发展机遇。璞华一直关注为客户智能化转型过程中提供的服务&#xff0c;能否将技术方案…

搭建站群应该如何选择站群服务器空间

很多新手小白做操作站群排名这种黑帽SEO技术的时候经常会问到一个问题&#xff0c;那就是在搭建站群的时候该如何选择合适最佳的服务器空间&#xff0c;配置太高吧太贵&#xff0c;配置太低吧担心做到中途出现问题&#xff0c;比如网站访问速度慢啊&#xff0c;操作太卡啊之类的…

【高性能计算】基于K均值的划分聚类实验

【高性能计算】基于K均值的划分聚类实验 实验目的实验内容实验步骤1、k均值聚类算法1.1 k均值聚类算法的基本思想1.2 k均值聚类算法的聚类过程1.3 k均值聚类算法的算法叙述 2、使用Python语言编写k均值聚类算法的源程序代码并分析其分类原理2.1 读取文件数据并进行可视化2.2 利…

实时监控Active Directory用户登录操作

用户登录到其域计算机是任何企业中发生的日常活动。一开始&#xff0c;这可能看起来是一个简单的Active Directory事件&#xff0c;但分配了不同角色的管理员可以将这些有价值的数据用于各种审计&#xff0c;合规性和运营需求。组织需要审核“AD 用户登录日志”的详细信息&…

卷积计算加速方法--slice卷积

文章目录 1、前言2、分块卷积存在的问题3、分块卷积问题的解决方案--slice卷积4、slice卷积每层所需切分尺寸计算4、结论及加速效果 1、前言 我们在上一篇卷积计算加速方法中讨论过&#xff0c;当卷积的输入太大导致内存不够用时&#xff0c;考虑将一大块卷积分成多个小块分别进…

CUDA矩阵乘法GEMM优化:全局内存-共享内存-寄存器优化,以及数据预存取优化

不使用任何优化的矩阵乘法&#xff0c;代码如下&#xff1a; __global__ void matrixMul(const float *A, const float *B, float *C, int M, int N, int K) {int tx blockIdx.x * blockDim.x threadIdx.x;int ty blockIdx.y * blockDim.y threadIdx.y;if(ty < M &…

SpringCloud Alibaba入门2之用户子模块开发

在上一章的基础上进行子模块的开发SpringCloud Alibaba入门之创建多模块工程_qinxun2008081的博客-CSDN博客 一、引入SpringBoot 我们在父项目统一管理引入的jar包的版本。我们采用父项目中以depencyMangement方式引入spring-boot&#xff0c;子项目依赖parent父配置即可。 &…

解决:torch.cuda.is_available()一直返回False,显卡是NVIDA GeForce MX250

目录 1. 背景2. 发现问题根源3. 解决问题 1. 背景 AI时代了&#xff0c;之前一直不怎么用到的小米笔记本Pro的 NVIDA GeForce MX250独显&#xff0c;就想着让它发挥余热&#xff0c;免得买了这么多年&#xff0c;一直闲置&#xff0c;浪费。 无脑按照chatGPT给的例子&#x…

学习 [产品思维] 需要做哪些准备?

学习 [产品思维] 的准备工作 在产品经理的眼中&#xff0c;一切皆产品。 首先我们需要给自己 设定一个目标&#xff0c;其实在 “设定目标” 的时候就已经在使用 “产品思维” 了。 接下来就是要做好 “学习笔记” &#xff0c;学习 “产品思维” 要比学习 “产品经理” 要简…

有哪些VPS云主机值得学生选择?

学生服务器很多大厂都提供&#xff0c;阿里云、腾讯云、华为云、百度云都有学生机可以申请&#xff0c;价格便宜&#xff0c;一般9元/月。 详细如下&#xff1a; 阿里云&#xff1a;云翼计划1核2G&#xff0c;9.5元/月&#xff0c;28.5元/3月&#xff0c;57元/半年&#xff0…

将发布的h5页面转换成微信小程序,无需重新开发,操作超级简单!

使用到的技术为uniapp和web-view 首先&#xff0c;我们先来了解一下web-view是什么&#xff1a; 简单的一句话来讲&#xff1a;web-view 是一个 web 浏览器组件&#xff0c;可以用来承载网页的容器&#xff0c;会自动铺满整个页面&#xff08;nvue 使用需要手动指定宽高&#x…

虚拟主机、ECS云服务器、VPS区别汇总

1、虚拟主机 虚拟主机就是利用虚拟化的技术&#xff0c;将一台服务器划分出一定大小的空间&#xff0c;每个空间都给予单独的 FTP 权限和 Web 访问权限&#xff0c;多个用户共同平均使用这台服务器的硬件资源。不同配置的虚拟主机主要是在磁盘空间、数据库大小、流量上面的区别…

租用云主机需要注意哪些因素

互联网发展已到了“云时代”&#xff0c;各种新兴的云产品给我们的工作生活带来了很多便利&#xff0c;比如说云计算、云存储、云服务器等&#xff0c;其中云服务器的出现极大地加强了网站的安全保障。提及云服务器&#xff0c;很多站长可能对这一概念还没有一个全面的认识&…

常州网站服务器_常州云主机

什么是弹性云服务器&#xff1f; 答&#xff1a; 弹性云服务器是基于若干台服务器或集群通过相关技术进行资源整合&#xff0c;通过云端控制平台按需生成相关主机资源&#xff0c; 每台云主机都有完全的控制权限&#xff0c;可根据用户需要配置环境&#xff0c;操作与独立主机没…

什么是云计算?IDC服务器托管和云服务器(云主机)哪个更划算?

云计算 云计算平台整合了互联网应用三大核心要素&#xff1a;计算、存储、网络&#xff0c;面向用户提供公用化的互联网基础设施服务。 云计算服务器&#xff08;又称云服务器或云主机&#xff09;是一种类似VPS主机的虚拟化技术&#xff0c; VPS是采用虚拟软件&#xff0c;V…

虚拟主机、VPS、ECS云服务器 区别

在阿里云上买了个云服务器。 ssh命令都没通&#xff0c;找服务端同事帮我看&#xff0c;说我买错了。应该买ECS。 1、虚拟主机 虚拟主机就是利用虚拟化的技术&#xff0c;将一台服务器划分出一定大小的空间&#xff0c;每个空间都给予单独的 FTP 权限和 Web 访问权限&#xff0…

云服务器是什么?阿里云ECS、腾讯云CVM、外贸VPS、虚拟主机究竟什么区别?

了解域名是什么之后&#xff0c;我们再来深入浅出地讲一讲什么是服务器。没接触过的人一听“服务器”这个词肯定觉得很高深莫测&#xff0c;觉得是什么高科技&#xff0c;其实说白了&#xff0c;服务器就是一台电脑&#xff0c;只不过放在大厂&#xff08;比如腾讯阿里华为&…
最新文章