Skip to content

Helps import tree-sitter grammars and scanners. A grammar transpiler, and a domain-specific C++ to JavaScript transpiler. Import ANTLR grammars to lezer-parser

License

Notifications You must be signed in to change notification settings

milahu/lezer-parser-import-tree-sitter-scanner

 
 

Repository files navigation

import-tree-sitter

Utility to help convert grammars written for tree-sitter to Lezer's grammar notation.

Status

This isn't a polished easy-to-use tool, but might help save time when porting a grammar.

Usage

CLI

npm install -g https://github.com/lezer-parser/import-tree-sitter
lezer-import-tree-sitter src/grammar.json >some_language.grammar

API

If you pass the tree-sitter grammar JSON representation (usually in src/grammar.json), as a string, to the buildGrammar function defined in src/import.ts, it'll spit out an equivalent Lezer grammar file.

Limitations

Because tree-sitter's concepts don't all map to Lezer concepts, you'll only get a working, finished grammar for very trivial grammars. Specifically:

  • Precedences are specified in a more fine-grained way in Lezer, so the tool only emits a comment indicating that a precedence was specified, and leaves it to you to put the proper conflict markers in.

  • Tree-sitter's alias expressions are a bit like inline rules, but make the inner rule's name disappear. That's not something you can do in Lezer, so you'll get additional noise in your tree in some cases if you don't further clean up the grammar.

About

Helps import tree-sitter grammars and scanners. A grammar transpiler, and a domain-specific C++ to JavaScript transpiler. Import ANTLR grammars to lezer-parser

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 89.9%
  • ANTLR 3.5%
  • Shell 2.5%
  • TypeScript 2.0%
  • C++ 1.9%
  • Python 0.1%
  • Nix 0.1%