# Using Parsers

This guide covers the fundamental concepts of using Tree-sitter, which is applicable across all programming languages.
Although we'll explore some C-specific details that are valuable for direct C API usage or creating new language bindings,
the core concepts remain the same.

Tree-sitter's parsing functionality is implemented through its C API, with all functions documented in the [tree_sitter/api.h][api.h]
header file, but if you're working in another language, you can use one of the following bindings found [here](../index.md#language-bindings),
each providing idiomatic access to Tree-sitter's functionality. Of these bindings, the official ones have their own API docs
hosted online at the following pages:

- [Go][go]
- [Java]
- [JavaScript (Node.js)][javascript]
- [Kotlin][kotlin]
- [Python][python]
- [Rust][rust]
- [Zig][zig]

[api.h]: https://github.com/tree-sitter/tree-sitter/blob/master/lib/include/tree_sitter/api.h
[go]: https://pkg.go.dev/github.com/tree-sitter/go-tree-sitter
[java]: https://tree-sitter.github.io/java-tree-sitter
[javascript]: https://tree-sitter.github.io/node-tree-sitter
[kotlin]: https://tree-sitter.github.io/kotlin-tree-sitter
[python]: https://tree-sitter.github.io/py-tree-sitter
[rust]: https://docs.rs/tree-sitter
[zig]: https://tree-sitter.github.io/zig-tree-sitter