Miller Medeiros: AST - Abstract Syntax Tree

Preview:

DESCRIPTION

7Masters JavaScript | Miller Medeiros

Citation preview

AST: AbstractSyntax Tree

/ Setembro 2013@millermedeiros

Mas o que vem a ser AST?

AST é uma representação do"código" em formato de

"árvore".

AST é normalmente um formato de transição, usado para descrever aestrutura original do programa antes que o mesmo seja convertido para

outro formato.

é representado como:

function sum(a, b) { return a + b;}

{ "type": "Program", "body": [ { "type": "FunctionDeclaration", "id": { "type": "Identifier", "name": "sum" }, "params": [ { "type": "Identifier", "name": "a" }, {

"type": "Identifier",

E por que isso é útil?

É muito útil para ferramentasque analizam código

lint / validaçãoanálise de complexidadeautocomplete baseado no contextodetecção de globais...

É também muito importantepara ferramentas que alteram o

código

minificaçãoformataçãorefactoringcompilerstranspilers...

Estrutura da AST(Esprima / SpiderMonkey Parser API)

Tokens (símbolos)Tokens são grupos de caracteres gerados apartir da análise léxica do

programa.

a + b

[{ "type": "Identifier", "value": "a"},{ "type": "Punctuator", "value": "+"},{ "type": "Identifier", "value": "b"}]

Nodes (nós)"Nodes" são representações de estruturas base do programa apartir da

análise sintática

a + b

{ "type": "ExpressionStatement", "expression": { "type": "BinaryExpression", "operator": "+", "left": { "type": "Identifier", "name": "a" }, "right": { "type": "Identifier", "name": "b" } }

}

Ferramentas

EsprimaEsprima é o parser mais popular para JavaScript e existem diversas

ferramentas baseadas nele.

http://esprima.org/demo/parse.html

EsformatterFormatador de JavaScript com mais de 200 opções de configuração,

ainda em fase experimental, provavelmente será "concluído" até o finalde 2013.

https://github.com/millermedeiros/esformatter

nodefyConverte módulos escritos no formato AMD para node.js

https://github.com/millermedeiros/nodefy

Construa asferramentas do

futuro!

Obrigado!@millermedeiros

http://slides.millermedeiros.com/7masters/ast/

Recommended