Babel 编译过程

179 阅读1分钟

首先了解一下V8的编译过程

babel编译过程

parse

parse 阶段的目的是把远嘛字符串转换成机器能够理解的AST,这个过程分为词法分析、语法分析,比如 let name = "lin" 这样一段源码,我们要先把它分成一个个不能细分的单词(token),也就是letname=, lin 这个过程是词法分析,按照单词的构成规则来拆分字符串成单词,之后要把token进行递归的组装,生成AST,这个过程是语法分析,按照不同的语法结构,来吧一组单词组合成对象

trasnform

transform阶段是对parse生成的AST的处理,户进行AST的遍历,便利的过程中处理到不同的AST节点会调用注册的相应的visitor函数,visitor函数可以对AST进行增删改,返回新的AST(可以指定是否继续便利新生成的AST),这样便利万一遍AST之后就完成了对代码的修改

generate

generate阶段会把AST打印成目标代码字符串,并且会生成sourcemap,不同的AST对应不同结构的字符串,比如ifStatement就可以打印成if(test){} 格式的代码,这样从AST根节点进行递归打印,就可以生成目标代码的字符串