ast-traverse.js
Simple but flexible AST traversal with pre and post visitors. Works in node and browsers.
Usage
// ast is a Mozilla Parser API compatible structure// generated by Esprima or another parservar ast = ; var traverse = ; // print AST node types, pre-order (node first, then its children);console;/* => Program ExpressionStatement from parent Program via body[0] BinaryExpression from parent ExpressionStatement via expression CallExpression from parent BinaryExpression via left Identifier from parent CallExpression via callee Literal from parent CallExpression via arguments[0] Identifier from parent CallExpression via arguments[1] Literal from parent BinaryExpression via right */ // you can also visit post-order, or both// all four arguments are provided to both visitors (left out unused below)var indent = 0;;console;/*=> Program ExpressionStatement BinaryExpression CallExpression Identifier Literal Identifier Literal*/ // return false from the pre-visitor to skip traversing its children// throw an exception to abort traversal // by default node property names beginning with $ are skipped// but you can supply your own skipProperty function instead;/*=> Program ExpressionStatement*/
Installation
Node
Install using npm
npm install ast-traverse
var traverse = ;
Browser
Clone the repo and include it in a script tag
git clone https://github.com/olov/ast-traverse.git