1. 分詞/詞法分析
將由字符串組成的字符串 分解為 有意義的代碼塊。
2. 解析/語法分析
將詞法單元流(數(shù)組),轉(zhuǎn)換為一個由元素逐級嵌套的所組成的程序語法樹,這棵樹也成為AST抽象語法樹.
3. 代碼生成
將AST轉(zhuǎn)換為可執(zhí)行的代碼的這個過程,稱為代碼生成。簡單來說就是某種方法來將AST語法樹轉(zhuǎn)換為機(jī)器指令,用來創(chuàng)建,分配內(nèi)存等.并且將值存儲.
例子
var a = 2
AST語法樹
{
"type": "Program",
"start": 0,
"end": 189,
"body": [
{
"type": "VariableDeclaration",
"start": 179,
"end": 188,
"declarations" : [
{
"type": "VariableDeclarator",
"start": 183,
"end": 188,
"id": {
"type": "Identifier",
"start": 183,
"end": 184,
"name": "a"
},
"init": {
"type": "Literal",
"start": 187,
"end": 188,
"value": 2,
"raw": "2"
}
}
],
"kind": "var"
}
],
"sourceType": "module"
}