--- title: Introduction --- # Introduction Tree-sitter is a library for parsing source code. It aims to be: * **Fast** and incremental so that it can be used in a text editor * **Robust** enough to provide useful results even in the presence of syntax errors * **General** enough to parse any programming language * **Dependency-free** (and written in pure C) so that it can be embedded in any application ### Language Bindings There are currently bindings that allow Tree-sitter to be used from the following languages: * [JavaScript](https://github.com/tree-sitter/node-tree-sitter) * [Rust](https://github.com/tree-sitter/rust-tree-sitter) * [Haskell](https://github.com/tree-sitter/haskell-tree-sitter) * [Ruby](https://github.com/tree-sitter/ruby-tree-sitter) ### Available Parsers There are fairly complete parsers for the following languages: * [Bash](https://github.com/tree-sitter/tree-sitter-bash) * [C](https://github.com/tree-sitter/tree-sitter-c) * [C++](https://github.com/tree-sitter/tree-sitter-cpp) * [Go](https://github.com/tree-sitter/tree-sitter-go) * [JavaScript](https://github.com/tree-sitter/tree-sitter-javascript) * [PHP](https://github.com/tree-sitter/tree-sitter-php) * [Python](https://github.com/tree-sitter/tree-sitter-python) * [Ruby](https://github.com/tree-sitter/tree-sitter-ruby) * [Rust](https://github.com/tree-sitter/tree-sitter-rust) * [TypeScript](https://github.com/tree-sitter/tree-sitter-typescript) There are parsers in development for these languages: * [Haskell](https://github.com/tree-sitter/tree-sitter-haskell) * [Java](https://github.com/tree-sitter/tree-sitter-java) * [OCaml](https://github.com/tree-sitter/tree-sitter-ocaml) * [C-sharp](https://github.com/tree-sitter/tree-sitter-c-sharp) * [Julia](https://github.com/tree-sitter/tree-sitter-julia) * [Scala](https://github.com/tree-sitter/tree-sitter-scala) ### Talks on Tree-sitter * [FOSDEM 2018](https://www.youtube.com/watch?v=0CGzC_iss-8) * [GitHub Universe 2017](https://www.youtube.com/watch?v=a1rC79DHpmY)