摘要:
注:参考自http://dukeland.hk,本博客系列内容为自己解读的成果,以备将来自己回顾使用。所有版权归原作者所有,如有任何问题,请联系原作者。这一部分我们到了parser,开始分析语义了。先上一段代码。1,parser对象基本内容function Parser(scanner){ this.scanner = scanner; this.currentToken = new Token(); this.lookaheadToken = new Token(); this.lookaheadToken.consumed = true; //看下面注释}//读取一... 阅读全文
摘要:
注:参考自http://dukeland.hk,本博客系列内容为自己解读的成果,以备将来自己回顾使用。所有版权归原作者所有,如有任何问题,请联系原作者。考虑到“字”分析比较简单,所以和“词”分析写到一起,形成这篇文章:1, reader.js//读字符是要为读词调用的,所以无外乎要做三件事儿:1,存数据;2,存自己的状态;3,提供读字符和回退字符的函数供调用function Reader(str){ this.data = str; this.currPos = 0; this.dataLength = str.length;}//机械式地读取下一个字符,所有字符读完了就返回... 阅读全文
摘要:
注:参考自http://dukeland.hk,本博客系列内容为自己解读的成果,以备将来自己回顾使用。所有版权归原作者所有,如有任何问题,请联系原作者。写编程语言的分析器是一个较为困难的工作。按常规思路,遇到困难的工作我们首先要做的就是把它分解成数个模块,便于我们化解和定位问题,然后各个击破。那么为了完成编程语言的分析器:1(字):将代码按字符读入,过滤掉空格、换行符、注释等内容。2(词):在字符读入的过程中就将这些字符组装成编程语言关键字。比如不间断地读入了'v', 'a', 'r',那么就形成了'var’关键字,可以先行保存,以待后续 阅读全文