bebel抽象語法樹(AST)中js節點名稱

2021-10-18 13:32:34 字數 1491 閱讀 7374

functiondeclaration(函式宣告)

function a() {}

functionexpression(函式表示式)

var a = function() {}

arrowfunctionexpression(箭頭函式表示式)

()=>{}(此處可以思考:為什麼沒有箭頭函式宣告,以及declaration和expression的區別)

awaitexpression(await表示式)

async function a ()

callexpression(呼叫表示式)

a()memberexpression(成員表示式)

a.bvariabledeclarator(變數宣告)

var,const,let(var,const,let用node中的kind區分)

identifier(變數識別符號)

var a(這裡a是乙個identifier)

numericliteral(數字字面量)

var a = 1

stringliteral(字串字面量)

var a = 『a』

booleanliteral(布林值字面量)

var a = true

nullliteral(null字面量)

var a = null(此處可以思考:為什麼沒有undefined字面量)

blockstatement(塊)

arrayexpression(陣列表示式)

objectexpression(物件表示式)

var a = {}

spreadelement(擴充套件運算子)

,[…a]

objectproperty(物件屬性)

(這裡的a:1是乙個objectproperty)

objectmethod(函式屬性)

}expressionstatement(表示式語句)

a()ifstatement(if)

if () {}

forstatement(for)

for (;?{}

forinstatement(for in)

for (a in b) {}

forofstatement(for of)

for (a of b) {}

importdeclaration(import宣告)

import 『a』

importdefaultspecifier(import default說明符)

import a from 『a』

importspecifier(import說明符)

import from 『a』

newexpression(new表示式)

new a()

classdeclaration(class宣告)

class a {}

classbody(class body)

class a {}(類的內部)

編譯抽象語法樹

編譯抽象語法樹 對大多數開發人員來說,編譯就意謂著產生本地 給人感覺就是乙個字,難。但是,並不一定要產生本地 對於 dsl,通常產生其他更加通用的程式語言。net 框架提供幾個把抽象語法樹編譯成程式的功能。技術的選擇取決於幾個因素。例如,如果語言針對的是開發人員,那麼,生成文字檔案就足夠了,內容可以...

python抽象語法樹的遍歷

遍歷語法樹獲取資訊 語法樹node for node in ast.walk tree if isinstance node,ast.functiondef print node.name class codevisitor ast.nodevisitor def generic visit sel...

抽象類基本語法

include using namespace std 面向抽象類程式設計 面向一套預先定義好的介面程式設計 解耦合 模組的劃分 class figure 抽象類 class circle public figure virtual void getarea virtual void getarea...