Miller Medeiros: AST - Abstract Syntax Tree
Upcoming SlideShare
Loading in...5
×
 

Miller Medeiros: AST - Abstract Syntax Tree

on

  • 848 views

7Masters JavaScript | Miller Medeiros

7Masters JavaScript | Miller Medeiros

Statistics

Views

Total Views
848
Views on SlideShare
438
Embed Views
410

Actions

Likes
0
Downloads
2
Comments
0

1 Embed 410

http://setemasters.imasters.com.br 410

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Miller Medeiros: AST - Abstract Syntax Tree Miller Medeiros: AST - Abstract Syntax Tree Presentation Transcript

  • AST: Abstract Syntax 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 a estrutura original do programa antes que o mesmo seja convertido para outro formato.
  • é representado como: functionsum(a,b){ returna+b; } { "type":"Program", "body":[ { "type":"FunctionDeclaration", "id":{ "type":"Identifier", "name":"sum" }, "params":[ { "type":"Identifier", "name":"a" }, {
  • E por que isso é útil?
  • É muito útil para ferramentas que analizam código
  • lint / validação análise de complexidade autocomplete baseado no contexto detecção de globais ...
  • É também muito importante para ferramentas que alteram o código
  • minificação formatação refactoring compilers transpilers ...
  • 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
  • Esprima Esprima é o parser mais popular para JavaScript e existem diversas ferramentas baseadas nele. http://esprima.org/demo/parse.html
  • Esformatter Formatador de JavaScript com mais de 200 opções de configuração, ainda em fase experimental, provavelmente será "concluído" até o final de 2013. https://github.com/millermedeiros/esformatter
  • nodefy Converte módulos escritos no formato AMD para node.js https://github.com/millermedeiros/nodefy
  • Outras ferramentas Rocambole escodegen escope jshint UglifyJS JSComplexity detect-globals esrefactor groundskeeper es6ify Istanbul Rework (css)
  • Referências Wikipedia: Abstract Syntax Tree Wikipedia: Syntax Analysis Wikipedia: Lexical Analysis SpiderMonkey Parser API
  • Construa as ferramentas do futuro!
  • Obrigado! @millermedeiros http://slides.millermedeiros.com/7masters/ast/