espree
An Esprima-compatible JavaScript parser (by eslint)
astexplorer
A web tool to explore the ASTs generated by various parsers. (by fkling)
SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
surveyjs.io
featured
espree | astexplorer | |
---|---|---|
5 | 44 | |
2,244 | 5,980 | |
1.1% | - | |
6.2 | 6.0 | |
5 days ago | 27 days ago | |
JavaScript | JavaScript | |
BSD 2-clause "Simplified" License | MIT License |
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
espree
Posts with mentions or reviews of espree.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2023-11-07.
-
ESLint: under the hood
Focusing again on ESLint, the parser used by the linter is called Espree. This is an in-house parser built by the ESLint folks to fully support ECMAScript 6 and JSX on top of the already existing Esprima. The Espree module provide APIs for both tokenization and parsing that you can easily test out.
-
Abstract Syntax Trees and Practical Applications in JavaScript
Why do we then have other JavaScript parsers like babel parser, swc parser, acorn, espree and the likes since JavaScript engines have their own internal parsers?
-
Quick start with ESLint
How does ESLint work? ESLint uses Espree for Javascript parsing. It uses an AST to evaluate patterns in code. It does all this before runtime.. meaning, without running your Javascript code it will find the bugs, syntax and stylistic errors.
-
Gentle Introduction To ESLint Rules
ESLint doesn't process the code into the compiler phases, rather it provides an option to let you specify a Parser. By default, ESLint uses Espree which essentially converts JS source code to AST data structure, so in case you want to write a rule targeting TypeScript source code, you'll need to specify a different parser in your .eslintrc.json configuration file, same applies for different file extension, for HTML you might use this or creating your own parser!
- Show HN: Monocle – bidirectional code generation library
astexplorer
Posts with mentions or reviews of astexplorer.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2024-04-06.
-
Understanding Code Structure: A Beginner's Guide to Tree-sitter
You can play with your code here, and visualise ASTs for the same.
-
What is an Abstract Syntax Tree in Programming?
Website
-
How to create your own Eslint rule with tests, boosting the DX, and code-review
To understand this syntax, I recommend exploring AST Explorer. You will have a better view of how the AST of JavaScript works and how to correlate it with the Eslint syntaxy:
-
Programming from Top to Bottom - Parsing
You can never mistake type_declaration with an identifier, otherwise the program will not work. Aside from that constraint, you are free to name them whatever you like, there is no one standard, and each parser has it own naming conventions, unless you are planning to use something like LLVM. If you are interested, you can see examples of naming in different language parsers in the AST Explorer.
-
ESLint: under the hood
The rule that I want to write will be called not-allows-underscore: the idea is to abolish the use of underscores when declaring variables or functions. It's a real dummy rule, but it should be enough to see in action the concepts that we have discussed earlier. The first thing that I would do is to go to AST Explorer, write down a code that declares variables and functions (both standard and arrows one) and take a look at what type of node is the one that encodes the identifier. Doing that, I found out that the node type of my interest is Identifier, what a surprise! 🤣. In particular, the structure of the node holds the string used as identifier in the name property.
-
😱 ESlint over Conventions - You have Not unlocked the power of ESlint 😱
All the information about the API, AST node names, AST Explorer, etc. you can read in the official documentation. I’m just going to show examples of how to automate the check-up of our created conventions.
- AST Exploret
-
200 Web-Based, Must-Try Web Design and Development Tools
AST Viewer
-
Building a JSON Parser from scratch with JS 🤯
If you want to see how the AST of popular languages looks, I recommend the AST Explorer. It supports various languages, and you can view the complete AST and navigate through the nodes. If you want to go further, you can try to copy some logic from an existing parser and implement it in your own, such as calculating an expression according to precedence order, for example: 1 + 2 * 3 (which is 7, not 9).
-
Creating my own typescript compiler
https://astexplorer.net/ is a good resource/playground for understanding ASTs and transpilers.
What are some alternatives?
When comparing espree and astexplorer you can also consider the following projects:
escodegen - ECMAScript code generator
deno_swc - The SWC compiler for Deno.
recast - JavaScript syntax tree transformer, nondestructive pretty-printer, and automatic source map generator
gogocode - GoGoCode is a transformer for JavaScript/Typescript/HTML based on AST but providing a more intuitive API.
Babel (Formerly 6to5) - 🐠 Babel is a compiler for writing next generation JavaScript.
vscode-language-tree - VSCode tree format support
Acorn - A small, fast, JavaScript-based JavaScript parser
ChakraCore - ChakraCore is an open source Javascript engine with a C API.
estree - The ESTree Spec
babel-plugin-handbook - How to create Babel plugins
proposal-type-annotations - ECMAScript proposal for type syntax that is erased - Stage 1
espree vs escodegen
astexplorer vs deno_swc
espree vs recast
astexplorer vs gogocode
espree vs Babel (Formerly 6to5)
astexplorer vs vscode-language-tree
espree vs Acorn
astexplorer vs ChakraCore
espree vs estree
astexplorer vs Acorn
espree vs babel-plugin-handbook
astexplorer vs proposal-type-annotations