# Tree Sitter > Syntax highlighting is a very common feature in applications that deal with code. Tree-sitter has built-in support for ## Pages - [Syntax Highlighting](3-syntax-highlighting.md): Syntax highlighting is a very common feature in applications that deal with code. Tree-sitter has built-in support for - [Code Navigation Systems](4-code-navigation.md): Tree-sitter can be used in conjunction with its [query language][query language] as a part of code navigation systems. - [Implementation](5-implementation.md): Tree-sitter consists of two components: a C library (`libtree-sitter`), and a command-line tool (the`tree-sitter`CLI). - [Contributing](6-contributing.md): Contributors to Tree-sitter should abide by the [Contributor Covenant][covenant]. - [7 Playground](7-playground.md): Tree - [Summary](summary.md): - [Using Parsers](./using-parsers/index.md) - [`tree-sitter build`](cli-build.md): The`build`command compiles your parser into a dynamically-loadable library, - [`tree-sitter complete`](cli-complete.md): The`complete`command generates a completion script for your shell. - [`tree-sitter dump-languages`](cli-dump-languages.md): The`dump-languages`command prints out a list of all the languages that the CLI knows about. This can be useful for ... - [`tree-sitter fuzz`](cli-fuzz.md): The`fuzz`command is used to fuzz a parser by performing random edits and ensuring that undoing these edits results in - [`tree-sitter generate`](cli-generate.md): The most important command for grammar development is`tree-sitter generate`, which reads the grammar in structured f... - [`tree-sitter highlight`](cli-highlight.md): You can run syntax highlighting on an arbitrary file using`tree-sitter highlight`. This can either output colors dir... - [CLI Overview](cli.md): The`tree-sitter`command-line interface is used to create, manage, test, and build tree-sitter parsers. It is contro... - [`tree-sitter init-config`](cli-init-config.md): This command initializes a configuration file for the Tree-sitter CLI. - [`tree-sitter init`](cli-init.md): The`init`command is your starting point for creating a new grammar. When you run it, it sets up a repository with all - [`tree-sitter parse`](cli-parse.md): The`parse`command parses source files using a Tree-sitter parser. You can pass any number of file paths and glob pa... - [`tree-sitter playground`](cli-playground.md): The`playground`command allows you to start a local playground to test your parser interactively. - [`tree-sitter query`](cli-query.md): The`query`command is used to run a query on a parser, and view the results. - [`tree-sitter tags`](cli-tags.md): You can run symbol tagging on an arbitrary file using`tree-sitter tags`. This will output a list of tags. - [`tree-sitter test`](cli-test.md): The`test`command is used to run the test suite for a parser. - [`tree-sitter version`](cli-version.md): The`version`command upgrades the version of your grammar. - [Getting Started](creating-parsers-1-getting-started.md): To develop a Tree-sitter parser, there are two dependencies that you need to install: - [The Grammar DSL](creating-parsers-2-the-grammar-dsl.md): The following is a complete list of built-in functions you can use in your`grammar.js`to define rules. Use-cases fo... - [Writing the Grammar](creating-parsers-3-writing-the-grammar.md): Writing a grammar requires creativity. There are an infinite number of CFGs (context-free grammars) that can be used ... - [External Scanners](creating-parsers-4-external-scanners.md): Many languages have some tokens whose structure is impossible or inconvenient to describe with a regular expression. - [Writing Tests](creating-parsers-5-writing-tests.md): For each rule that you add to the grammar, you should first create a *test* that describes how the syntax trees shoul... - [Publishing your grammar](creating-parsers-6-publishing.md): Once you feel that your parser is in a stable working state for consumers to use, you can publish it to various regis... - [Creating parsers](creating-parsers.md): Developing Tree-sitter grammars can have a difficult learning curve, but once you get the hang of it, it can be fun a... - [Introduction](index.md): Tree-sitter is a parser generator tool and an incremental parsing library. It can build a concrete syntax tree for a ... - [Getting Started](using-parsers-1-getting-started.md): To build the library on a POSIX system, just run`make`in the Tree-sitter directory. This will create a static library - [Basic Parsing](using-parsers-2-basic-parsing.md): In the example on the previous page, we parsed source code stored in a simple string using the`ts_parser_parse_strin... - [Advanced Parsing](using-parsers-3-advanced-parsing.md): In applications like text editors, you often need to re-parse a file after its source code has changed. Tree-sitter i... - [Walking Trees with Tree Cursors](using-parsers-4-walking-trees.md): You can access every node in a syntax tree using the`TSNode`APIs [described earlier][retrieving nodes], but if you ... - [Static Node Types](using-parsers-6-static-node-types.md): In languages with static typing, it can be helpful for syntax trees to provide specific type information about indivi... - [ABI versions](using-parsers-7-abi-versions.md): Parsers generated with tree-sitter have an associated ABI version, which establishes hard compatibility boundaries - [Using Parsers](using-parsers.md): This guide covers the fundamental concepts of using Tree-sitter, which is applicable across all programming languages. - [Query Syntax](using-parsers-queries-1-syntax.md): A _query_ consists of one or more _patterns_, where each pattern is an [S-expression][s-exp] that matches a certain s... - [Operators](using-parsers-queries-2-operators.md): When matching patterns, you may want to process specific nodes within the pattern. Captures allow you to associate names - [Predicates](using-parsers-queries-3-predicates-and-directives.md): You can also specify arbitrary metadata and conditions associated with a pattern - [The Query API](using-parsers-queries-4-api.md): Create a query by specifying a string containing one or more patterns: - [Pattern Matching with Queries](using-parsers-queries.md): Code analysis often requires finding specific patterns in source code. Tree-sitter provides a simple pattern-matching