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

news/2025/2/19 3:22:47/

 写自己的开发语言时,很多人都会拿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;考虑将一大块卷积分成多个小块分别进…