2013-04-21 43 views
43

抽象語法樹..我總是聽說在Github上編譯爲SpiderMonkey AST。
那麼,這是JS語法樹的實際標準嗎?還有V8,V8是否使用了同樣的AST?什麼是JavaScript AST,如何玩呢?

我該怎麼玩?

+7

下面是一個方便的javascript AST執行的可視化:http://int3.github.io/metajs/ – 2013-08-29 04:25:24

回答

22

SpiderMonkey提供parser api。這可能是最容易掌握語法對象的方法。

還有開放JS-JS解析器像Esprima(這是ECMAScript的,真的,但它是正確的了衚衕)

32

1.You可以看看AST explorer。一個在線工具,用於探索由10多個解析器生成的AST。學習一種語言的AST樹是一個很好的工具。
AST explorer source at Github.com

enter image description here


2.Also你可以粘貼JS代碼到JavaScript AST visualizer,然後單擊 「顯示AST」 按鈕,您將visully看到AST。

演示JS代碼:

function foo(d) { 
    d += 3; 
    return d+999 
} 
function bar(d) { 
    return d*100 
} 

js ast demo

+2

這張圖片有什麼好處?它有幫助嗎? – 2016-10-25 12:40:42

+0

這應該是被接受的答案。 :) – 2017-04-27 18:57:39

2

如果您想嘗試從教授ACRON解析器Marijnh https://github.com/marijnh嘗試此鏈接:https://astexplorer.net/

這是一個很小的,快速的JavaScript解析器,完全用JavaScript編寫。

上述JavaScript AST visualizer使用Esprima引擎,並且也用JavaScrpt編寫。

JavaScript在解析AST方面占主導地位,因爲JavaScript引擎今天已經超級優化。 https://en.wikipedia.org/wiki/JavaScript_engine

SpiderMonkey JS語法樹的AST標準? V8是否使用同一種AST?

這兩個網頁瀏覽器引擎都有用C++編寫的AST處理程序。這就是爲什麼除了eval之外,大多數情況下JavaScrpt代碼都會運行得很快。

+0

視頻鏈接無效 – 2017-08-15 20:26:42

+0

感謝@JuanPicado,我刪除了鏈接。 – prosti 2017-08-16 13:24:36

+0

我在想那個視頻的主題。 – 2017-08-16 13:55:13