HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

Tree-sitter: a new parsing system for programming tools - GitHub Universe 2017

GitHub2 HN recommenders · recommended in 2 months, 2018-2022
YouTube
24K views · 8 years ago · talk · evergreen

Max Brunsfeld of GitHub presents Tree-sitter, a parsing system for programming tools that supports incremental, error-tolerant parsing. He demos its integration into GitHub.com and Atom for syntax highlighting and code navigation.

Recommended as the canonical introduction to tree-sitter and why fast incremental parsing enables live editor support.

Compilers, interpreters & program analysisTesting, debugging & developer tools#tree-sitter#parsing#syntaxhighlighting#atom#developertools

4 comments from Hacker News

@ris58h2022 · in “Zas Editor”

They use tree-sitter link It's ok with errors in AST and just marks such nodes as invalid. There is a long (42 minutes) but worth to watch talk about tree-sitter ▶ this video Or the shorter version (20 minutes) link

RecommendsView on HN
@bhl2021 · in “Diffsitter: A tree-sitter based AST difftool to get meaningful semantic diffs”

`tree-sitter` has been post to the website a bunch of times so I remembered from those submissions: link Also these resources: link ▶ this video

CitesView on HN
@imoldfella2019 · in “A Brief and Brisk Overview of Compiler Architecture”

100% agree. If starting now I think you should consider targeting mlir[1]. It fixes many problems you will have with llvm, and allows you to create language specific dialects and transformations. Impressive new work by a top-notch team led by LLVM creator Chris Lattner. It has LLVM as an optional target, so you get that for free. For a parser, you should consider using tree-sitter[2]. Tree-sitter gives you live editor support for free. Impressive work by Max Brunsfeld. [1] link [2] ▶ this video

CitesView on HN
@lewisl90292018 · in “Atom 1.25”

Tree-sitter is not just for code folding, it's a full-on incremental parser that's fast enough to run on every keystroke. See their expand selection example for another really compelling use-case. If you're interested in more details, there's also this talk from the developer behind tree-sitter ( ▶ this video ), where he showcases how they could use tree-sitter to quickly parse entire multi-megabyte minified JS files to provide complete syntax highlighting for them that updates as you edit, and how the accuracy and usefulness of the actual syntax highlighting can improve over regex based implementations due to having access to the fully specified grammar of the language. I think tree-sitter is also a game changer for extension development once it stabilizes and the APIs are opened up. Extensions like swackets will no longer have arbitrary performance constraints that break user experience ( link ), and it opens the door to a whole new set of intelligent extensions that understand the languages you write at a much deeper level that were previously unfeasible due to parsing performance, or required some external heavy-weight language server.

RecommendsView on HN
"Tree-sitter - a new parsing system for programming tools" by Max Brunsfeld38:38

"Tree-sitter - a new parsing system for programming tools" by Max Brunsfeld

Strange Loop Conference
63K views • 8 years ago
Saša Jurić - Parsing from first principles - WebCamp Zagreb 20191:10:16

Saša Jurić - Parsing from first principles - WebCamp Zagreb 2019

WebCamp Zagreb
6K views • 6 years ago
Episode 1: A basic expression evaluator1:38:36

Episode 1: A basic expression evaluator

Immo Landwerth (terrajobst)
284K views • 8 years ago
High-performance Tree Wrangling, the APL Way // Aaron Hsu // Dyalog '1830:37

High-performance Tree Wrangling, the APL Way // Aaron Hsu // Dyalog '18

Dyalog User Meetings
6K views • 7 years ago
Parsing with Derivatives1:13:10

Parsing with Derivatives

Stanford
13K views • 15 years ago
Modernizing Compiler Design for Carbon Toolchain - Chandler Carruth - CppNow 20231:35:12

Modernizing Compiler Design for Carbon Toolchain - Chandler Carruth - CppNow 2023

CppNow
71K views • 3 years ago
Lexical Scanning in Go - Rob Pike51:18

Lexical Scanning in Go - Rob Pike

GoogleFOSSSydney
162K views • 15 years ago
Lecture 7A: Metacircular Evaluator, Part 11:24:38

Lecture 7A: Metacircular Evaluator, Part 1

MIT OpenCourseWare
32K views • 7 years ago
Over the Shoulder 1 - Text Preprocessing in Forth1:06:26

Over the Shoulder 1 - Text Preprocessing in Forth

Andreas Wagner
25K views • 12 years ago
Building Your Own Dynamic Language1:14:32

Building Your Own Dynamic Language

Stanford
21K views • 18 years ago
Parsing JSON Really Quickly: Lessons Learned47:52

Parsing JSON Really Quickly: Lessons Learned

InfoQ
86K views • 6 years ago
Simon Peyton Jones: Data Parallel Haskell1:19:57

Simon Peyton Jones: Data Parallel Haskell

nuACM
28K views • 16 years ago
[Linux.conf.au 2013] - Git For Ages 4 And Up1:39:43

[Linux.conf.au 2013] - Git For Ages 4 And Up

HackersOnBoard
208K views • 13 years ago
JSON Parser 100% From Scratch in Haskell (only 111 lines)1:50:07

JSON Parser 100% From Scratch in Haskell (only 111 lines)

Tsoding
205K views • 6 years ago
CppCon 2019: Matt Godbolt “Compiler Explorer: Behind The Scenes”1:00:21

CppCon 2019: Matt Godbolt “Compiler Explorer: Behind The Scenes”

CppCon
29K views • 7 years ago
The Maximal Graph - Wilker Silva39:15

The Maximal Graph - Wilker Silva

ClojureTV
8K views • 6 years ago
Brandt Bucher – A JIT Compiler for CPython47:51

Brandt Bucher – A JIT Compiler for CPython

encukou
14K views • 2 years ago
Barliman: trying the halting problem backwards, blindfolded - William Byrd, Greg Rosenblatt36:14

Barliman: trying the halting problem backwards, blindfolded - William Byrd, Greg Rosenblatt

ClojureTV
8K views • 9 years ago
Emacs Rocks! Episode 14: Paredit3:25

Emacs Rocks! Episode 14: Paredit

emacsrocks
65K views • 13 years ago
Debugging with the Scientific Method - Stuart Halloway49:09

Debugging with the Scientific Method - Stuart Halloway

ClojureTV
25K views • 10 years ago