关于词法方面解析的一些实践
读了《Let's Build a Compiler》前三章,对词法解析工作有一些自己粗浅的认识: {{ 单纯的词法解析,当然离不开文法描述,比如BNF范式描述之类的。
但是落实到代码实现层面,都有一个比较类似的模式描述这些
解析过程:
[吃着碗里的,瞧着锅里的。吃完碗里的,立即从锅里捞一碗,再吃着碗里的,瞧着锅里的]
比如:
char Look; // 这就是个碗
GetChar(); // 这个就用来从锅里捞一碗到碗里
其他所有的解析函数,都是解析Look这个碗里的内容,并据此作出决定是否要从锅里捞一碗。
只要碗里的吃完了,立即从锅里捞一碗,即任何时候Look利用完后,一定要带上一句GetChar()调用。
忽略空白字符的功能,需要调用SkipWhite()函数,该函数检测Look是否为空白字符,是的话,则根据上一条规则,利用完Look了从锅里捞一碗,即调用GetChar(),再检测,如此往复,直到Look不为空白字符时停止。即每捞一碗都保证碗里的不是老鼠屎。 }} 为了验证这个总结的 =============================================== json也能照这个法子给搞定喽。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |