# estree/estree

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/estree-estree).**

5,421 stars · 364 forks · NOASSERTION

## Links

- GitHub: https://github.com/estree/estree
- awesome-repositories: https://awesome-repositories.com/repository/estree-estree.md

## Topics

`ast` `estree` `javascript` `parsing` `specification`

## Description

ESTree is a formal schema and set of object interfaces used to represent JavaScript source code as a standardized abstract syntax tree. It serves as a common tree format and parser standard to ensure interoperability between different JavaScript parsers and transformation tools.

The specification provides a consistent way to model language constructs, including statements, expressions, and module declarations. It includes detailed representations for modern language features such as classes, private identifiers, and short-circuiting logic like nullish coalescing and optional chaining.

The project covers a broad surface of language tooling, including the modeling of module systems with dynamic imports and export aliasing, the handling of large integer literals, and the support of experimental syntax extensions for early-stage language proposals. It also defines how to map tree nodes to original source coordinates for precise location tracking.

This standardized model facilitates static code analysis, automated source code transformation, and general compiler tooling interoperability.

## Tags

### Development Tools & Productivity

- [Standardized AST Transformation](https://awesome-repositories.com/f/development-tools-productivity/ast-transformation-tools/standardized-ast-transformation.md) — Defines a consistent set of object interfaces to represent source code as a tree for tool interoperability. ([source](https://github.com/estree/estree/blob/master/es5.md))
- [Standardized Schemas](https://awesome-repositories.com/f/development-tools-productivity/ast-transformation-tools/standardized-ast-transformation/javascript-ast-transformations/standardized-schemas.md) — Defines a consistent tree format for JavaScript source code to ensure different parsers and tools can work together.
- [AST Node Location Mapping](https://awesome-repositories.com/f/development-tools-productivity/source-map-generators/ast-node-location-mapping.md) — Associates tree nodes with specific line and column numbers in the original code for precise error reporting. ([source](https://github.com/estree/estree/blob/master/es5.md))
- [AST-to-Source Mappings](https://awesome-repositories.com/f/development-tools-productivity/source-map-generators/event-to-source-mapping/ast-to-source-mappings.md) — Provides a standard for mapping abstract syntax tree nodes back to their original source code offsets.

### Software Engineering & Architecture

- [Abstract Syntax Tree Specifications](https://awesome-repositories.com/f/software-engineering-architecture/abstract-syntax-tree-specifications.md) — Defines a formal standardized structure for representing JavaScript source code syntax in a tree format.
- [Specification AST Generation](https://awesome-repositories.com/f/software-engineering-architecture/abstract-syntax-tree-tools/specification-ast-generation.md) — Defines a standardized set of object interfaces for representing JavaScript source code as an abstract syntax tree.
- [Interoperable Syntax Pipelines](https://awesome-repositories.com/f/software-engineering-architecture/interoperable-syntax-pipelines.md) — Provides a shared specification for abstract syntax trees enabling different frontend and backend tools to exchange data.
- [Syntax Tree Construction](https://awesome-repositories.com/f/software-engineering-architecture/trees/syntax-tree-construction.md) — Standardizes the construction and structure of hierarchical syntax representations from JavaScript source code.
- [ESTree AST Parsing](https://awesome-repositories.com/f/software-engineering-architecture/trees/syntax-tree-construction/estree-ast-parsing.md) — Provides the industry-standard specification for parsing JavaScript source code into abstract syntax trees. ([source](https://github.com/estree/estree/blob/master/deprecated.md))
- [Null-Coalescing Operators](https://awesome-repositories.com/f/software-engineering-architecture/default-configuration-values/fallback-value-logic/null-coalescing-operators.md) — Defines the standardized AST node for the nullish coalescing operator. ([source](https://github.com/estree/estree/blob/master/es2020.md))
- [Operator Node Modeling](https://awesome-repositories.com/f/software-engineering-architecture/default-configuration-values/fallback-value-logic/null-coalescing-operators/operator-node-modeling.md) — Models complex logic like optional chaining and nullish coalescing as structured AST nodes with distinct operands.
- [AST Schema Extensions](https://awesome-repositories.com/f/software-engineering-architecture/feature-extensions/ast-schema-extensions.md) — Specifies standardized node additions for experimental language proposals to maintain compatibility across parser versions.

### Programming Languages & Runtimes

- [Standardized Representations](https://awesome-repositories.com/f/programming-languages-runtimes/language-ecosystems-tooling/module-management/module-systems/standardized-representations.md) — Provides a standardized structure for import and export declarations using named, default, and namespace specifiers. ([source](https://github.com/estree/estree/blob/master/es2015.md))
- [Modern Syntax](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/javascript-language-features/modern-syntax.md) — Represents modern constructs including classes, arrow functions, template literals, and destructuring patterns. ([source](https://github.com/estree/estree/blob/master/es2015.md))
- [Module Interface Specifications](https://awesome-repositories.com/f/programming-languages-runtimes/module-interface-specifications.md) — Standardizes named imports, exports, and re-exports using literals for namespace identifiers. ([source](https://github.com/estree/estree/blob/master/es2022.md))
- [Parser Specifications](https://awesome-repositories.com/f/programming-languages-runtimes/parser-specifications.md) — Establishes a common tree format that ensures interoperability between different JavaScript parsers and transformation tools.
- [Class AST Modeling](https://awesome-repositories.com/f/programming-languages-runtimes/class-definitions/class-ast-modeling.md) — Represents class bodies including method definitions, property definitions, and static initialization blocks. ([source](https://github.com/estree/estree/blob/master/es2022.md))
- [Private Identifier Nodes](https://awesome-repositories.com/f/programming-languages-runtimes/class-method-definitions/class-extensions/category-based-extensions/private-scoping/private-identifier-nodes.md) — Maps private class elements and their usage in expressions to a standardized AST node format. ([source](https://github.com/estree/estree/blob/master/es2022.md))
- [Syntax Proposal Modeling](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/language-features/syntax-proposal-modeling.md) — Standardizes how new JavaScript syntax proposals and experimental features are represented in a structured tree format.
- [Module Export Specifications](https://awesome-repositories.com/f/programming-languages-runtimes/module-export-specifications.md) — Maps export-all declarations that rename the exported namespace using a specific alias. ([source](https://github.com/estree/estree/blob/master/es2020.md))
- [Dynamic Imports](https://awesome-repositories.com/f/programming-languages-runtimes/module-importing/dynamic-imports.md) — Models dynamic import syntax by treating the module source as an arbitrary expression node. ([source](https://github.com/estree/estree/blob/master/es2020.md))
- [Module Metadata Specifications](https://awesome-repositories.com/f/programming-languages-runtimes/module-metadata-specifications.md) — Models module import and export declarations that specify metadata such as media types for loaded modules. ([source](https://github.com/estree/estree/blob/master/es2025.md))
- [BigInt Representations](https://awesome-repositories.com/f/programming-languages-runtimes/numeric-literals/bigint-representations.md) — Defines a structured node for BigInt literals that preserves both the native numeric value and the original string representation. ([source](https://github.com/estree/estree/blob/master/es2020.md))
- [Source Coordinate Mapping](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/data-structure-type-helpers/data-structures/hierarchical-tree-structures/source-code-abstract-syntax-trees/source-coordinate-mapping.md) — Provides a structured representation of JavaScript syntax that maps source locations to specific line and column numbers.
- [Standardized Tree Models](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-compilers/source-code-templates/source-code-transformation-engines/standardized-tree-models.md) — Represents code in a standardized format to facilitate automated refactoring and the generation of modified source trees.

### Part of an Awesome List

- [Experimental Syntax Support](https://awesome-repositories.com/f/awesome-lists/devtools/parsers-and-language-support/experimental-syntax-support.md) — Provides the means to parse and analyze unstable language features and new proposals via tree extensions. ([source](https://github.com/estree/estree/tree/master/experimental))

### Data & Databases

- [Literal Node Representations](https://awesome-repositories.com/f/data-databases/data-type-definitions/scalar-types/custom-scalars/scalar-value-generation/literal-value-definitions/literal-node-representations.md) — Maps primitive values and large integers to nodes storing both the computed value and original source text.
- [Optional Chaining](https://awesome-repositories.com/f/data-databases/null-value-representations/optional-containers/optional-value-types/optional-chaining.md) — Models member accesses and function calls that short-circuit when a reference is null or undefined. ([source](https://github.com/estree/estree/blob/master/es2020.md))

### Testing & Quality Assurance

- [Static Code Analysis](https://awesome-repositories.com/f/testing-quality-assurance/static-code-analysis.md) — Models language constructs as a structured tree to enable tools that analyze code without executing it.
