ANTLR4(五) 解析JSON

本文介绍如何使用ANTLR4解析JSON,从JSON参考手册提取关键信息,编写JSON的语法文件。内容涵盖对象、键值对、数组、值、字符串等的解析规则,并通过ANTLR4进行语法分析树检验。
摘要由CSDN通过智能技术生成

解析JSON

这次我们试着用新学的语法和词法知识来解析json。

从JSON参考手册中提取关键信息

一个典型的json文件:
在这里插入图片描述
我们从json的参考手册和官方语法解释得出以下:

  1. 一个json文件可以是一个对象,或者是一个由若干值组成的数组
  2. 一个对象是一组无序的键值对集合;一个对象以一个{ 开始,并以一个}结束。每个键后跟一个:,键值对之间由,分隔;会有对象情况。
  3. 键值对字符串的形式
  4. 数组是一组的有序集合;一个数组由一个[开始,一个]结束。其中值由,分隔。会有数组情况。
  5. 一个可以是一个双引号包围的字符串、一个数字true/falsenull、一个对象,或者一个数组,可能有嵌套。
  6. 一个字符串零个或者多个Unicode字符组成的序列,由双引号包围;除了"\以外都可以被匹配;转义字符的匹配我们另外规定;"不能被匹配是因为字符串变量不能嵌套字符串,但是"本身可以通过\转义显示;\不能被匹配时因为它本身有转义的含义,我们可以通过\转义显示。
  7. 转义字符由\开头,包含" \ / b f n r t,以及u+四个16进制数
  8. UNICODEu4个16进制数组成。
  9. 数字有三种情况:整数 小数 指数;它们都应该考虑正负关系;整数需要考虑只有0是0开头的,其它都是1-9开头;指数需要考虑e后是否需要正负号。

根据信息编写语法文件

我们一条一条来。

json文件

json
    :   object
    |   array
    ;

对象

这里我们将键值对作为pair单独成一个文法规则,不然STRING:value会显得很乱。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值