天天看点

再谈Parser

Parser(decoder, analyzer, deserializer)的作用就是把一个字符串(一维,流)转化成一个数据结构、对象(任何数据结构或者对象,都是树或者图结构),相反的过程叫编码、序列化。

Parser的写法大概有2种方式

1)递归下降(recursive descend),经典例子是有序链表转换成排序二叉树

2) meta character驱动的状态机。状态就是一些表明当前状态的变量和最终要parse出的data structure, 一般还要用栈维护对象层次

xml parser, json parser,key value pair parser, 都可以用这两方法写,其中所谓事件都是由meta character触发,比如分隔符(item 分隔符“,”,key - value  分隔符“:”,单词分隔符空格,行分隔符 \n等), [和{触发的 新容器事件,}]触发的容器结束事件。

对于xml,主要就是<>触发的 startElement,endElement,characters等SAX事件。

继续阅读