语法子集及解析思路:
当中 %xhh 表示以 16 进制表示的字符,/ 是多选一,* 是零或多个,( ) 用于分组。
上面的子集意思是 json文本是由空白 值 空白组成,空白是空格符/制表符/换行符/回车符的一种,值是null/false/true的一种,每一种有对应的字面值。
解析思路
由于 JSON 语法特别简单,只需检测下一个字符,便可以知道它是哪种类型的值,然后调用相关的分析函数。对于完整的 JSON 语法,跳过空白后,只需检测当前字符:
n ➔ null
t ➔ true
f ➔ false
这三个类型思路都是将json文本和字面值相比较,相同就设置类型并返回成功标识,不相同返回错误消息。
实现过程中遇到的问题;
test_parse_xx函数前两行设置了v.type值,再去解析不是一定会返回错误吗?
lept_parse()函数会根据输入的json文本重新设置v的类型。
这个解析器完成什么工作?
把读入的json文本解析成数据结构(包括类型,值,文本…),供程序调用
lept_context 作用?
为了减少解析函数之间传递多个参数,我们把这些数据都放进一个 lept_context 结构体。刚开始不理解,写到解析数组的时候就知道了,解析过程中除了json文本&#