#incremental #parsing #dart


dart grammar for the tree-sitter parsing library

3 releases

0.0.3 Jan 23, 2023
0.0.2 Jan 19, 2023
0.0.1 Jan 19, 2023

#182 in Text editors

Download history 478/week @ 2023-10-22 426/week @ 2023-10-29 814/week @ 2023-11-05 616/week @ 2023-11-12 512/week @ 2023-11-19 566/week @ 2023-11-26 522/week @ 2023-12-03 901/week @ 2023-12-10 621/week @ 2023-12-17 574/week @ 2023-12-24 591/week @ 2023-12-31 561/week @ 2024-01-07 442/week @ 2024-01-14 521/week @ 2024-01-21 750/week @ 2024-01-28 458/week @ 2024-02-04

2,254 downloads per month
Used in ast-grep-language

MIT license

154K SLoC

C 151K SLoC JavaScript 2K SLoC // 0.2% comments Scheme 153 SLoC // 0.2% comments Rust 34 SLoC // 0.4% comments


This is a tree-sitter grammar written for the dart programming language. I attempted to adhere as closely as possible to the dart language spec. Initially I started with a copy of the tree-sitter Java grammar which is why there may be a few relics included in here. For the sake of simplifying the syntax tree, many items were made inlined with tree-sitter's "underscore" method of writing rules.

Getting Started

  • Go to the project directory
  • run npm install (first time)
  • run npm run build_init (first time) npm run build (subsequent times)
  • run npm run test

To test a single highlight file

  • run tree-sitter highlight test/highlight/types.dart

To test a single test file

  • run tree-sitter test -f 'testcasefilter'
  • for example tree-sitter test -f 'dart string literals'

To show the output of a parse for a sample file (for example while debugging highlight issues)

  • run tree-sitter parse path/to/file.dart


This crate provides dart language support for the tree-sitter parsing library.

Typically, you will use the language function to add this language to a tree-sitter Parser, and then use the parser to parse some code:

let code = "";
let mut parser = tree_sitter::Parser::new();
parser.set_language(tree_sitter_dart::language()).expect("Error loading dart grammar");
let tree = parser.parse(code, None).unwrap();


~69K SLoC