jquery/esprima
ECMAScript parsing infrastructure for multipurpose analysis
{ "createdAt": "2011-11-23T05:36:43Z", "defaultBranch": "main", "description": "ECMAScript parsing infrastructure for multipurpose analysis", "fullName": "jquery/esprima", "homepage": "http://esprima.org", "language": "TypeScript", "name": "esprima", "pushedAt": "2023-04-16T01:17:08Z", "stargazersCount": 7114, "topics": [ "ast", "ecmascript", "esprima", "javascript", "parser", "parsing" ], "updatedAt": "2025-11-25T20:05:04Z", "url": "https://github.com/jquery/esprima"}Esprima (esprima.org, BSD license) is a high performance, standard-compliant ECMAScript parser written in ECMAScript (also popularly known as JavaScript). Esprima is created and maintained by Ariya Hidayat, with the help of many contributors.
Features
Section titled “Features”- Full support for ECMAScript 2019 (ECMA-262 10th Edition)
- Sensible syntax tree format as standardized by ESTree project
- Experimental support for JSX, a syntax extension for React
- Optional tracking of syntax node location (index-based and line-column)
- Heavily tested (~1600 unit tests with full code coverage)
Esprima can be used to perform lexical analysis (tokenization) or syntactic analysis (parsing) of a JavaScript program.
A simple example on Node.js REPL:
> var esprima = require('esprima');> var program = 'const answer = 42';
> esprima.tokenize(program);[ { type: 'Keyword', value: 'const' }, { type: 'Identifier', value: 'answer' }, { type: 'Punctuator', value: '=' }, { type: 'Numeric', value: '42' } ]
> esprima.parseScript(program);{ type: 'Program', body: [ { type: 'VariableDeclaration', declarations: [Object], kind: 'const' } ], sourceType: 'script' }For more information, please read the complete documentation.