0.1.6 • Published 2 years ago
type-sitter v0.1.6
type-sitter
The Industrial Parser Generator. If you can write a JSON Schema for it, this can generate a parser for it.
Generates Tree-Sitter Grammars From TypeScript Definitions. Inspired By Rust-Sitter.
usage
- Write a base grammar that supports TypeScript primitives:
any,array,null,number,object,string,bool.
// use API of GrammarBuilder to define a base grammar with placeholders.
// placeholders in the returned base grammar is resolved by type-sitter.
export const baseGrammar: ($$: GrammarBuilder) => string;- Express your DSL that goes on top of your base grammar with types.
export interface Grammar { // ... grammar definition using TypeScript typings } - Use
type-sitterto generate a Tree-Sitter grammar.# outputs grammar.js and grammar.json type-sitter -i grammar.ts - Use
tree-sitterto make a Tree-Sitter parser.# outputs the actual parser tree-sitter generate - Optionally use
grammar.jsto further modify the parser andgrammar.jsonto validate ASTs sent over the wire.
See caveats for limitations.
See type-sitter --help for more information.
See examples directory for sample DSLs.
caveats
- Not all TypeScript features are supported. See quicktype for details.
- Duplicated pairs with the same keys but different values do not error out.
- Generated parsers do not replace a data validation layer. Those are mutex.
- This project currently focuses on declarative DSLs vs imperative grammars.