나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2025-03-02 01:58:34

Tree-sitter

<colbgcolor=#7d8f30><colcolor=#fff> Tree-sitter
파일:Tree-sitter.png
종류 증분 파서 제너레이터
최초 개발자 맥스 브런스펠드(Max Brunsfeld)
안정 버전 v0.25.2
언어 C, Rust
라이선스 MIT 허가서
링크 파일:홈페이지 아이콘.svg 파일:GitHub 아이콘.svg파일:GitHub 아이콘 화이트.svg 파일:cargo.rs.png 파일:npm, lnc. n-logo.png
1. 개요2. 역사3. 특징4. 활용
4.1. 지원 플랫폼4.2. 파생 소프트웨어
5. 관련 문서

[clearfix]

1. 개요

증분식 파서 제너레이터 구현체.

2. 역사

최초 개발자인 맥스 브런스필드는 2013년 GitHub에 입사해 당시 깃헙의 최대 야심작 중 하나였던 Atom 에디터 팀으로 일하기 시작했다.[z][2] 동시에 2013년 11월 6일[3] CC++로 증분 파싱 시스템인 Tree-sitter를 사이드 프로젝트로 개발하다가[4], Atom이 1.0버전 출시를 준비하는 동안 이를 GitHub의 정식 프로젝트로 포함시킨다.

이후 브런스필드는 2018년 1월 8일 당시 CoffeeScript 기반이었던 Atom의 구문 강조 시스템 및 코드 폴딩 기능에 선택적 Tree-sitter 지원을 추가하는 PR을 작성했고[5] 이는 2018년 2월 14일(안정 릴리즈는 2018년 3월 16일) Atom v1.25.0-beta0 버전부터 core.useTreeSitterParsers 플래그를 통한 실험적 기능으로 제공되기 시작해[6][7] 2018년 10월 31일 Atom v1.31 버전부터는 기본 설정으로 완전히 통합되었다.[8]

2019년 1월 5일, 파서 제너레이터 구현체를 C++에서 Rust로 재작성하고, 파서 개발용 CLI 인터페이스까지 Rust로 재작성하며 node-gyp를 통해 별도의 저장소에서 개발되고 있던 tree-sitter-clideprecate시켰다.[9]

GitHub의 새 code search 및 navigation 기능에 GitHub가 개발한 stackgraph와 함께 중점적으로 쓰이고 있다.## linguist의 모든 언어가 지원되는 것은 아니고, 현재 C##, Python#, Ruby#, Elixir#, Rust#, TypeScript# 등의 언어 navigation 기능이 Tree-sitter 파서 기반으로 구현되어 있다.

3. 특징

4. 활용

4.1. 지원 플랫폼

4.2. 파생 소프트웨어

5. 관련 문서


[z] Max joined the Atom team in 2013 after working at Pivotal Labs. While driving Atom towards its 1.0 launch during the day, Max spent nights and weekends building Tree-sitter, a blazing-fast and expressive incremental parsing framework that currently powers all code analysis at GitHub. Before leaving to start Zed, Max helped GitHub's semantic analysis team integrate Tree-sitter to support syntax highlighting and code navigation on github.com. #@[2] Max Brunsfeld is an engineer on GitHub's Atom team. Tree-sitter - a new parsing system for programming tools[3] Commit 84c5bceb818127fd7728655fb209a1be92e53fde - Nov 6, 2013[4] Today, I'm gonna be talking about a piece of software I've been working on for almost 4 years now, called Tree-sitter. I worked on it as a side project for a long time and now I'm working on it as part of some project of GitHub. Tree-sitter: a new parsing system for programming tools - GitHub Universe 2017 - Dec 21, 2017[5] This pull request adds a new config setting to Atom: core.useTreeSitterParsers, which defaults to false. If you set that setting to true, when editing files written in certain languages, Atom will use a new parsing system called Tree-sitter to provide improved syntax highlighting and code folding. Allow Tree-sitter parsers to be used for syntax highlighting and code folding #16299 - Jan 8, 2018[6] Support greatly improved syntax highlighting and code folding with a next-generation parsing system called tree-sitter. See the pull request for details about opting in to try it out. 1.25.0-beta0 release - Feb 14, 2018[7] For syntax highlighting and code-folding, an incremental parsing system, called tree-sitter, is available in beta form. Tree-sitter is a C library used via bindings to higher-level languages. Tree-sitter currently is disabled by default but can be turned on via the User Tree Sitter Parsers setting. What's new in GitHub's Atom text editor - Mar 16, 2018[8] At GitHub, we want to explore new ways of making programming intuitive and delightful, so we've developed a parsing system called Tree-sitter that will serve as a new foundation for code analysis in Atom. Tree-sitter makes it possible for Atom to parse your code while you type—maintaining a syntax tree at all times that precisely describes the structure of your code. We've enabled the new system by default in Atom, bringing a number of improvements. Atom understands your code better than ever before - Oct 31, 2018[9] In this PR, I'm moving the functionality of tree-sitter-cli into this repository. Instead of implementing the CLI in JavaScript like before, it will now be in Rust. In addition, I'm porting the C++ compiler library (used by the CLI) to Rust, and consolidating it into the CLI crate. Include CLI functionality in the main repo, using Rust instead of C++ #260 - Jan 5, 2019