2013-04-21 9 views
43

Abstract Syntax Tree .. Ho sempre sentito che compile su SpiderMonkey AST su Github.
Quindi, questo è uno standard effettivo dell'albero di sintassi JS? E c'è il V8, V8 usa lo stesso tipo di AST?Che cos'è JavaScript AST, come giocarci?

Come posso giocare con quello?

+7

Ecco una comoda visualizzazione di un'esecuzione AST javascript: http://int3.github.io/metajs/ –

risposta

22

SpiderMonkey offre parser api. Questo è probabilmente il modo più semplice per mettere le mani sugli oggetti di sintassi.

C'è anche aperto JS-js parser come Esprima (che è ECMAScript, in realtà, ma è proprio il vicolo)

32

1.You può dare un'occhiata a AST explorer. Uno strumento online per esplorare gli AST generati da più di 10 parser. È un buon strumento per imparare l'albero AST di una lingua.
AST explorer source at Github.com.

enter image description here


2.Also è possibile incollare il codice js in JavaScript AST visualizer e fare clic sul pulsante "Mostra ast", si vedrà l'AST visully. Codice

demo js:

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

js ast demo

+2

qual è il vantaggio di questa immagine? È utile? –

+0

Questa dovrebbe essere la risposta accettata. :) –

2

Se volete provare il parser acron dal professore Marijnh https://github.com/marijnh provare questo link: https://astexplorer.net/

Questo è un piccolo, parser JavaScript veloce, scritto completamente in JavaScript.

Il summenzionato codice JavaScript AST visualizer utilizza il motore Esprima ed è stato anche scritto in JavaScrpt.

JavaScript domina nell'analisi AST perché i motori JavaScript sono ottimizzati oggi. https://en.wikipedia.org/wiki/JavaScript_engine

SpiderMonkey AST standard dell'albero di sintassi JS? V8 usa lo stesso tipo di AST?

Entrambi questi motori di browser Web hanno elaborazioni AST scritte in C++. Questo è il motivo per cui il codice JavaScrpt verrà eseguito velocemente nella maggior parte dei casi, ad eccezione di eval.

+0

il collegamento video non è valido –

+0

Grazie a @JuanPicado, ho rimosso il collegamento. – prosti

+0

Mi stavo chiedendo l'argomento di quel video. –