#cmake #incremental #parser

tree-sitter-cmake

cmake grammar for the tree-sitter parsing library

9 releases

0.4.3 Mar 19, 2024
0.4.2 Feb 22, 2024
0.4.1 Nov 8, 2023
0.4.0 Jun 29, 2023
0.0.3 Jul 8, 2022

#127 in Text editors

Download history 505/week @ 2024-01-19 527/week @ 2024-01-26 505/week @ 2024-02-02 521/week @ 2024-02-09 647/week @ 2024-02-16 668/week @ 2024-02-23 857/week @ 2024-03-01 1345/week @ 2024-03-08 1006/week @ 2024-03-15 784/week @ 2024-03-22 1123/week @ 2024-03-29 1135/week @ 2024-04-05 938/week @ 2024-04-12 805/week @ 2024-04-19 765/week @ 2024-04-26 627/week @ 2024-05-03

3,268 downloads per month
Used in neocmakelsp

MIT license

570KB
21K SLoC

C 21K SLoC JavaScript 87 SLoC Rust 34 SLoC // 0.1% comments

A Tree-sitter parser for CMake

This project provides a cmake parser. Its primary use case is to provide a cmake parser for nvim-treesitter.

Parsed syntax

  • Command
    • General commands
    • For and while loops
    • If conditions
    • Functions and macros
  • Arguments
    • Quoted arguments
    • Bracket arguments
    • Unquoted arguments
    • Parentheses
  • Variable refences
    • Environment and cache variables
    • Normal variables
  • Generator expression

lib.rs:

This crate provides cmake 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_cmake::language()).expect("Error loading cmake grammar");
let tree = parser.parse(code, None).unwrap();

Dependencies

~2.7–4MB
~71K SLoC