difftastic/vendored_parsers/tree-sitter-rust
Wilfred Hughes 2126a63c4c Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4'
git-subtree-dir: vendored_parsers/tree-sitter-rust
git-subtree-mainline: c266bf23fc
git-subtree-split: afb6000a71
2023-08-18 22:35:38 +07:00
..
.github/workflows Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
bindings Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
examples Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
queries Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
script Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
src Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
test/corpus Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
.eslintrc.js Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
.gitattributes Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
.gitignore Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
.gitmodules Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
.npmignore Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
Cargo.toml Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
LICENSE Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
Package.swift Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
README.md Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
binding.gyp Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
grammar.js Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00
package.json Add 'vendored_parsers/tree-sitter-rust/' from commit 'afb6000a71fb9dff3f47f90d412ec080ae12bbb4' 2023-08-18 22:35:38 +07:00

README.md

tree-sitter-rust

CI

Rust grammar for tree-sitter

Features

  • Speed — When initially parsing a file, tree-sitter-rust takes around twice as long as Rustc's hand-coded parser.

    $ wc -l examples/ast.rs
      2157 examples/ast.rs
    
    $ rustc -Z ast-json-noexpand -Z time-passes examples/ast.rs | head -n1
      time: 0.007    parsing # (7 ms)
    
    $ tree-sitter parse examples/ast.rs --quiet --time
      examples/ast.rs    16 ms
    

    But if you edit the file after parsing it, this parser can generally update the previous existing syntax tree to reflect your edit in less than a millisecond, thanks to Tree-sitter's incremental parsing system.

References

  • The Rust Grammar Reference — The grammar reference provides chapters that formally define the language grammar.
  • The Rust Reference — While Rust does not have a specification, the reference tries to describe its working in detail. It tends to be out of date.
  • Keywords and Operators and Symbols.
  • Archive of the outdated Syntax Index that contains examples of all syntax in Rust cross-referenced with the section of The Book that describes it.