加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

[概念]Babel编译步骤基本流程与概念

发布时间:2020-12-15 00:35:15 所属栏目:C语言 来源:网络整理
导读:解析(语法) (sytanx) 语法解析模块开始以字符流的形式阅读源码 标记有意义的字符串序列( token ),例如目标源码中的 token 包括 let 、 a 、 = 、 123 、 ; (词法分析) 利用语法分析模块组合 token 间的关系,生成相应的节点( Node , Identifier ...) (语法分

解析(语法) (sytanx)

语法解析模块开始以字符流的形式阅读源码

  • 标记有意义的字符串序列(token),例如目标源码中的token包括leta=123; (词法分析)

  • 利用语法分析模块组合token间的关系,生成相应的节点(Node,Identifier...) (语法分析)

  • 组合节点,生成抽象语法树AST

结构大概如下,忽略Position、Scope等等其他信息;

- Program
  - body [{
      - VariableDeclaration (kind:let)
        - declarations [{
            - VariableDeclarator 
                - id (name:"a")
                - init (value:"123")
        }]
  }]

转换 (transform)

这里转换成es5实际上就是把let转换成var

Program.body[0].kind = "var"
- Program
  - body [{
      - VariableDeclaration (kind:var)
        - declarations [{
            - VariableDeclarator 
                - id (name:"a")
                - init (value:"123")
        }]
  }]

生成

生成器再将AST转换成代码

var a = 123;

DONE!

参考文献与相关网址

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读