Tree-sitter (parser generator)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Tree-sitter
Original authorMax Brunsfeld
Initial release2018; 8 years ago (2018)
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Written inRust, C
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    PlatformCross-platform
    TypeParser generator
    LicenseMIT License
    Websitetree-sitter.github.io/tree-sitter/

    In computing, Tree-sitter is a parser generator and incremental parsing library.

    Details

    [edit | edit source]

    It is used to parse source code into concrete syntax trees usable in compilers, interpreters, text editors, and static analyzers.[1][2] It is specialized for use in text editors, as it supports incremental parsing for updating parse trees while code is edited in real time,[3] and provides a built-in S-expression query system for analyzing code.[4]

    Text editors which have official integrations with Tree-sitter include Atom,[5] GNU Emacs,[6] Neovim,[7] Lapce,[8] Zed,[9] and Helix.[10] Language bindings allow it to be used from programming languages including Go, Haskell, Java, JavaScript (with Node.js and WASM), Kotlin, Lua, OCaml, Perl, Python, Ruby, Rust, and Swift. Tree-sitter parsers have been written for these languages and many others.[11] GitHub uses Tree-sitter to support in-browser symbolic code navigation in Git repositories.[12]

    Tree-sitter uses a GLR parser, a type of LR parser.[13][14][12]

    Tree-sitter was originally developed by GitHub for use in the Atom text editor, where it was first released in 2018.[15][5]

    See also

    [edit | edit source]

    References

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    8. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    12. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    13. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    14. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).. See 22:30 for Wagner influence and 29:27 for GLR implementation.
    15. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    [edit | edit source]