Jisu
JavaScript Parser
Install / Use
/learn @ben-sb/JisuREADME
JISU
A work in progress JavaScript tokeniser and parser. Currently only supports a subset of the JavaScript language and is not ECMAScript compliant.
Install via npm install jisu
An online demo is available at https://ben-sb.github.io/jisu
About
JISU is mostly a recursive descent parser. It uses the bottom-up precedence climbing method to parse binary and logical expressions.
Specs
The repo has two exports:
- parse - Parses a full program
- parseExpression - Parses a single expression
Both take the input as a string and optionally a set of parser options.
interface ParserOptions {
emitLogs?: boolean;
omitLocations?: boolean;
}
I'm a big fan of Babel and as a result the format of the AST JISU produces is extremely similar to Babel's. As a result @babel/generator can be used on the AST (as seen in src/demo.ts). I also took inspiration from the @babel/types package and implemented a similar system in src/parser/ast.
Tests
Unit tests can be run via npm test<br/>
Currently there are very few tests but I plan to add more.
To Do
- Rewrite object member parsing
- Allow semi-keywords (e.g. await, async, of) to be treated as identifiers
- Support numbers expressed in hexadecimal, octal and scientific notation
- Support regular expressions
- Probably a lot more
To Fix
- Object patterns are treated as normal object expressions even when not used as a pattern
- Spread elements are allowed in sequence expressions
- Spread elements are allowed on their own in parenthesised expressions
Related Skills
node-connect
337.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
337.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.3kCommit, push, and open a PR
