Extensive Language Pack for Tree-Sitter
Project description
Tree Sitter Language Pack
This package bundles a comprehensive collection of tree-sitter languages as both source distribution and pre-built wheels. It is compatible with tree-sitter v0.22.0 and above. It is strongly typed.
Notes:
- This package is a maintained and updated fork of tree-sitter-languages by Grant Jenks, and it incorporates code contributed by ObserverOfTime (see this PR).
- This package is MIT licensed and the original package of which this is a fork has an Apache 2.0 License. Both licenses are available in the LICENSE file.
- All languages bundled by this package are licensed under permissive open-source licenses (MIT, Apache 2.0 etc.) only - no GPL licensed languages are included.
Installation
pip install tree-sitter-language-pack
Usage
This library exposes two functions get_language
and get_parser
.
from tree_sitter_language_pack import get_language, get_parser
python_lang = get_language('python') # this is an instance of tree_sitter.Language
python_parser = get_parser('python') # this is an instance of tree_sitter.Parser
See the list of available languages below to get the name of the language you want to use.
Available Languages:
Each language below is identified by the key used to retrieve it from the get_language
and get_parser
functions.
- actionscript - MIT License
- ada - MIT License
- agda - MIT License
- arduino - MIT License
- asm - MIT License
- astro - MIT License
- bash - MIT License
- beancount - MIT License
- bibtex - MIT License
- bicep - MIT License
- bitbake - MIT License
- c - MIT License
- cairo - MIT License
- capnp - MIT License
- chatito - MIT License
- clarity - MIT License
- clojure - CC0 1.0 Universal License
- cmake - MIT License
- comment - MIT License
- commonlisp - MIT License
- cpon - MIT License
- cpp - MIT License
- csharp - MIT License
- css - MIT License
- csv - MIT License
- cuda - MIT License
- d - MIT License
- dart - MIT License
- dockerfile - MIT License
- dot - MIT License
- doxygen - MIT License
- elisp - MIT License
- elixir - MIT License
- elm - MIT License
- embeddedtemplate - MIT License
- erlang - MIT License
- fennel - MIT License
- firrtl - Apache License 2.0
- fish - Unlicense license
- fortran - MIT License
- func - MIT License
- gdscript - MIT License
- gitattributes - MIT License
- gitcommit - WTFPL License
- gitignore - MIT License
- gleam - Apache-2.0 license
- glsl - MIT License
- gn - MIT License
- go - MIT License
- gomod - MIT License
- gosum - MIT License
- groovy - MIT License
- gstlaunch - MIT License
- hack - MIT License
- hare - MIT License
- haskell - MIT License
- haxe - MIT License
- hcl - Apache License 2.0
- heex - MIT License
- hlsl - MIT License
- html - MIT License
- hyperlang - MIT License
- hyprlang MIT License
- ispc - MIT License
- janet - BSD-3-Clause license
- java - MIT License
- javascript - MIT License
- jsdoc - MIT License
- json - MIT License
- jsonnet - MIT License
- julia - MIT License
- kconfig - MIT License
- kdl - MIT License
- kotlin - MIT License
- linkerscript - MIT License
- llvm - MIT License
- lua - MIT License
- luadoc - MIT License
- luap - MIT License
- luau - MIT License
- magik - MIT License
- make - MIT License
- markdown - MIT License
- matlab - MIT License
- mermaid - MIT License
- meson - MIT License
- ninja - MIT License
- nix - MIT License
- nqc - MIT License
- objc - MIT License
- odin - MIT License
- org - MIT License
- pascal - MIT License
- pem - MIT License
- perl - Artistic License 2.0
- pgn - BSD-2-Clause license
- php - MIT License
- po - MIT License
- pony - MIT License
- powershell - MIT License
- printf - ISC License
- prisma - MIT License
- properties - MIT License
- psv - MIT License
- puppet - MIT License
- purescript - MIT License
- pymanifest - MIT License
- python - MIT License
- ql - MIT License
- qmldir - MIT License
- query - Apache License 2.0
- r - MIT License
- racket - MIT License
- rbs - MIT License
- re2c - MIT License
- readline - MIT License
- requirements - MIT License
- ron - Apache License 2.0
- rst - MIT License
- ruby - MIT License
- rust - MIT License
- scala - MIT License
- scheme - MIT License
- scss - MIT License
- slang - MIT License
- smali - MIT License
- smithy - MIT License
- solidity - MIT License
- sql - MIT License
- squirrel - MIT License
- starlark - MIT License
- svelte - MIT License
- swift - MIT License
- tablegen - MIT License
- tcl - MIT License
- test - MIT License
- thrift - MIT License
- toml - MIT License
- tsv - MIT License
- twig - WTFPL License
- typescript - MIT License
- typst - MIT License
- udev - MIT License
- ungrammar - MIT License
- uxntal - MIT License
- v - MIT License
- verilog - MIT License
- vhdl - MIT License
- vim - MIT License
- vue - MIT License
- wgsl - MIT License
- xcompose - MIT License
- xml - MIT License
- yaml - MIT License
- yuck - MIT License
- zig - MIT License
Contributing
This library is open to and welcomes contributions.
Setup
- Fork the repository.
- Make sure to have PDM installed on your machine.
- You will also need the clang toolchain installed on your machine and available in path. Consult the pertinent documentation for your operating system.
- Install and build locally by running
pdm install -v
.
Adding a new language
Install via PDM
Some bindings are installed via PDM and are added to the package dependencies in the pyproject.toml file. To add an installed package follow these steps:
- Install the bindings with
pdm add <bindings_package_name> --no-sync
. - Install the dev dependencies with
pdm install -v --no-self
- Execute the cloning script with
pdm run scripts/clone_vendors.py
. - Update both the literal type
InstalledBindings
and theinstalled_bindings_map
dictionary in the __init .py _ file. - Build the bindings by executing:
pdm install -v
. - Execute the tests with
pdm run test
. - If the tests pass, commit your changes and open a pull request.
Adding a Binary Wheel Language
- Add the language to the sources/language_definitions.json file at the repository's root.
This file contains a mapping of language names to their respective repositories.
{
"name": {
"repo": "https://github.com/...",
"branch": "master", // not mandatory
"directory": "sub-dir/something", // not mandatory
"generate": true // not mandatory
}
}
That is, each object must have a repo
key, and optionally a branch
, directory
, and generate
keys.
repo
is the URL of the tree-sitter repository. This value is mandatorybranch
the branch of the repository to checkout. You should specify this only when the branch is not calledmain
( i.e. formaster
or other names, specify this).directory
is the directory under which there is ansrc
folder. This should be specified only in cases where thesrc
folder is not immediately under the root folder.generate
is a flag that dictates whether thetree-sitter-cli
generate command should be executed in the given repository / directory combo. This should be specified only if the binding needs to be build in the repository.
- Update the
SupportedLanguage
literal type in the init.py file. - Install the dev dependencies with
pdm install -v --no-self
- Execute the cloning script with
pdm run scripts/clone_vendors.py
. - Build the bindings by executing:
pdm install -v
. - Execute the tests with
pdm run test
. - If the tests pass, commit your changes and open a pull request.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for tree_sitter_language_pack-0.1.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d0792090cb7c54597feefc3b7a01b1a1c6f28937183089cc707941e14b61040 |
|
MD5 | 1916bfb5abe68a9f7f36591ab4571928 |
|
BLAKE2b-256 | d32f317a7ea2bb05b706ca129679f891e8baad08b638aa97b75bdc4e4ab95556 |