Expand description
§Abstract Syntax Tree (AST) Module
Defines the data structures representing JavaScript code as an abstract syntax tree, enabling programmatic manipulation and analysis of code.
§Overview
The AST module provides comprehensive node types for:
- Program Structure: Scripts, modules, and declarations
- Statements: Control flow, loops, and declarations
- Expressions: Operations, calls, and assignments
- Literals: Values, objects, and functions
- Common Elements: Positions, spans, and metadata
§Node Types
Each AST node includes:
- Position Information: Line and column numbers
- Type Safety: Strongly typed node variants
- Visitor Pattern: Traversal and transformation support
- Serialization: JSON export capabilities
§Usage
use jetcrab::ast::{Node, Program, Visitor};
let program = Program::new(vec![]);
let node = Node::Program(program);
// Use visitor pattern for traversal
struct MyVisitor;
impl Visitor for MyVisitor {
// Implementation details...
}Re-exports§
pub use common::Position;pub use common::Span;pub use error::AstError;pub use node::ExportDeclaration;pub use node::ExportSpecifier;pub use node::ImportDeclaration;pub use node::ImportDefaultSpecifier;pub use node::ImportNamespaceSpecifier;pub use node::ImportSpecifier;pub use node::Node;pub use node::Program;pub use visitor::Visitor;pub use statements::BlockStatement;pub use statements::BreakStatement;pub use statements::CatchClause;pub use statements::ClassDeclaration;pub use statements::ContinueStatement;pub use statements::DebuggerStatement;pub use statements::DoWhileStatement;pub use statements::ExpressionStatement;pub use statements::ForStatement;pub use statements::FunctionDeclaration;pub use statements::IfStatement;pub use statements::LabeledStatement;pub use statements::ReturnStatement;pub use statements::SwitchCase;pub use statements::SwitchStatement;pub use statements::ThrowStatement;pub use statements::TryStatement;pub use statements::VariableDeclaration;pub use statements::VariableDeclarator;pub use statements::WhileStatement;pub use statements::WithStatement;pub use expressions::AssignmentExpression;pub use expressions::AwaitExpression;pub use expressions::BinaryExpression;pub use expressions::CallExpression;pub use expressions::ConditionalExpression;pub use expressions::LogicalExpression;pub use expressions::MemberExpression;pub use expressions::MetaProperty;pub use expressions::NewExpression;pub use expressions::RegExp;pub use expressions::Super;pub use expressions::UnaryExpression;pub use expressions::UpdateExpression;pub use expressions::YieldExpression;pub use literals::ArrayLiteral;pub use literals::ArrowFunctionExpression;pub use literals::ClassExpression;pub use literals::FunctionExpression;pub use literals::ObjectLiteral;pub use literals::Property;pub use literals::RestElement;pub use literals::SpreadElement;pub use literals::TaggedTemplateExpression;pub use literals::TemplateElement;pub use literals::TemplateLiteral;