mirror of
https://github.com/oxc-project/oxc.git
synced 2026-09-14 19:36:11 +08:00
34 lines
1.3 KiB
Markdown
34 lines
1.3 KiB
Markdown
# Oxc Codegen
|
|
|
|
High-performance code generation from AST back to JavaScript/TypeScript source code.
|
|
|
|
## Overview
|
|
|
|
This crate converts AST nodes back into source code strings, supporting JavaScript, TypeScript, and JSX. It's designed for speed and correctness, producing clean, readable output.
|
|
|
|
## Key Features
|
|
|
|
- **Fast code generation**: Optimized for performance with minimal allocations
|
|
- **Source map support**: Generate accurate source maps during output
|
|
- **Configurable formatting**: Control whitespace, semicolons, and other formatting options
|
|
- **Comment preservation**: Maintain comments during code generation
|
|
- **Binary expression optimization**: Intelligent parentheses insertion
|
|
|
|
## Architecture
|
|
|
|
### Code Generation Pipeline
|
|
|
|
1. **AST Traversal**: Walk through AST nodes systematically
|
|
2. **Token Generation**: Convert nodes to appropriate tokens/strings
|
|
3. **Formatting**: Apply whitespace, indentation, and style rules
|
|
4. **Source Mapping**: Track original source positions if enabled
|
|
|
|
### Design Principles
|
|
|
|
- **Correctness**: Generated code must be functionally equivalent to original
|
|
- **Performance**: Minimize string allocations and copying
|
|
- **Readability**: Produce clean, well-formatted output
|
|
- **Fidelity**: Preserve semantic meaning and behavior
|
|
|
|
The codegen is adapted from esbuild's approach, optimized for Rust and oxc's AST structure.
|