Module ast

Source
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;

Modules§

common
error
expressions
literals
node
serialization
statements
visitor