美文网首页自制前端框架Web前端之路让前端飞
自制前端框架 Day.9 parser的最初形态完成

自制前端框架 Day.9 parser的最初形态完成

作者: 蚊子爸爸 | 来源:发表于2017-05-21 11:32 被阅读36次

    最近几天忙的要死,每天回到家都是半夜,看会儿视频,写会儿代码就上床睡觉了。自己的parser还剩下一个小部分就是如何解析对象。

    describe('parse',function(){
      it('解析{}',function(){
        var fn = parse('{name:"wangji",age:"18"}');
        expect(fn()).toEqual({ name: 'wangji', age: '18' })
      })
    })
    

    事实上解析对象的思路也很简单,先是生成tokens。然后根据tokens生成AST节点,这时候新增了一个token类型identifier:

    this.tokens.push({
            text:currentChar,
            identifier:true
          })
    

    这个token类型主要是为了解决在生成AST节点的时候,如何处理一个对象的key值。
    同时在ASTBuilder阶段新增加了一个节点类型:

    ASTBuilder.prototype.identifier=function(){
      return {type:ASTBuilder.Identifier,name:this.consume().text}
    }
    

    经过ASTBuilder以后生成的AST是这样的:

    Program的body节点是一个ObjectExpression类型的节点 ObjectExpression里面的properties

    这树生成出来以后,只需要在compile的时候做简单的处理就可以,代码如下:

    image.png

    其实在写这个部分的时候因为基础建设做的已经差不多了,所以感觉还是挺容易。另外,自己在写的时候脑子不停的思索,有时候睡觉的时候闭着眼睛脑子都在想着代码,一层一层的调用函数,竟然在脑子里也出现了一个函数栈,哈哈。说明自己逻辑思维能力增强了吗?
    其实自己平时写代码还是写的太少了,应该多写,多想。这句话虽然说起来很容易,可是认真去做的时候还是挺不容易的。
    有时候经常觉得,有的代码已经写过一次了,没必要再写。可事实上是,一遍一遍的重复一个做过的事,才能把它内化成为自己的思想。
    我在想,我是不是应该把前几天的东西全都删除,再写一遍。这次索性录成一个视频,可以随时边写边自言自语说出自己正在思考的东西。这样不知道怎么样呢?

    相关文章

      网友评论

        本文标题:自制前端框架 Day.9 parser的最初形态完成

        本文链接:https://www.haomeiwen.com/subject/lbvmxxtx.html