Skip to content

kimjayson/anyParser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

anyParse

some structure grammar parser

json_parser.py 实现json解析器

思路:

读到第一个字符后就能确定后面如何解析

  • 遇到一个左花括号{时,那么从当前字符开始就需要解析出一个对象,而解析对象的过程则是解析出多对 key/value,每解析完一对,如果你遇到了右花括号},则对这个对象的解析就结束了,而如果遇到的不是右花括号,则你需要解析下一对 key/value,直到遇见右花括号。而解析出一对 key/value,则是必须先解析出一个字符串,然后一个冒号:,然后是这个 key 对应的值。
  • 遇到一个左方括号([)时,你需要从这个字符开始解析出一个数组;而解析数组,则是解析出多个由逗号分隔的值,直到解析完一个值后遇到的不是逗号而是右方括号(]),则这个数组解析完毕。
  • 遇到一个双引号(")时,则需要从当前位置开始解析出一个字符串。
  • 遇到字母 “n” 的话,则是从当前位置开始往后读 4 个字符,且读到的 4 个字符组成的字符串必须是“null”,否则就应该报错。
  • 遇到字母 “t” 的话,则是从当前位置开始往后读 4 个字符,且读到的 4 个字符组成的字符串必须是“true”,否则就应该报错。
  • 遇到字母 “f” 的话,则是从当前位置开始往后读 5 个字符,且读到的 5 个字符组成的字符串必须是“false”,否则就应该报错。
  • 剩下的就是数字了,数字还分整数和浮点数,这里目前只讨论整数。

代码逻辑:递归调用

todo:

  1. 封装类
  2. 处理空白,支持转义字符,unnicode转义符\u6211
  3. 做json序列器
  4. 做json格式化输出器

About

some structure grammar parser

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages