tree-sitter-cpp

A fast, incremental C++ grammar for the tree-sitter parsing library

Library
Cargo
v0.23.4
450stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
46/100Fair
Development Activity4
Maintenance20
Community80
Maturity60
Momentum20

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
73/100Good
Architecture78
Code Quality75
Innovation72
Learning Curve65

tree-sitter-cpp is the official C++ grammar for tree-sitter, the incremental parsing library used by editors and developer tools to build concrete syntax trees. It extends the tree-sitter-c grammar with C++-specific constructs (classes, templates, namespaces, lambdas) and compiles to a generated C parser plus bindings for Rust, Go, Node.js, Python, and Swift.

Editors, linters, and static-analysis tools consume this grammar to get fast, error-tolerant, incremental parsing of C++ source, enabling features like syntax highlighting, code folding, and structural code navigation without needing a full compiler front-end.

What You Get

  • A complete, actively maintained C++ grammar definition covering modern C++ syntax (templates, lambdas, namespaces, structured bindings)
  • A generated, dependency-free C parser (parser.c) compiled from the grammar for use in any host language
  • Official bindings for Rust, Go, Node.js, Python, and Swift so the grammar can be embedded directly in tooling written in those languages
  • Highlight and tag queries (queries/highlights.scm) that map syntax nodes to editor highlighting categories
  • A corpus of test fixtures (test/corpus, test/highlight) validating grammar correctness against real C++ code samples

Common Use Cases

  • Editor syntax highlighting - power semantic, tree-sitter-based highlighting in editors like Neovim, Helix, and Zed for C++ files
  • Code navigation tooling - build ‘jump to definition’ and structural outline features by querying the parsed C++ syntax tree
  • Static analysis and linters - traverse the concrete syntax tree to implement custom C++ lint rules without a full compiler
  • Language server implementations - use the grammar as the parsing layer underneath an LSP server for C++ tooling

Under The Hood

Architecture - The grammar is authored in grammar.js as a JavaScript DSL that imports and extends the base tree-sitter-c grammar, layering on C++-specific rules (classes, templates, operator overloading, lambdas). The tree-sitter CLI compiles this declarative grammar into a generated src/parser.c (a large, table-driven LR parser) plus a small hand-written src/scanner.c for lexical edge cases that can’t be expressed in pure grammar rules, with src/node-types.json describing the resulting AST node schema.

Tech Stack - The grammar source is JavaScript, but the shipped artifact is generated C code with zero runtime dependencies beyond tree-sitter-language; the repo ships first-class bindings for Rust (Cargo.toml, bindings/rust), Go (go.mod), Node.js (package.json, binding.gyp), Python (pyproject.toml, setup.py), and Swift (Package.swift), making it a genuinely multi-language distribution rather than a single-ecosystem library.

Code Quality - Correctness is validated through a test/corpus directory of annotated C++ snippets paired with expected parse trees, plus a separate test/highlight suite exercising the highlight queries; CI runs across the various language bindings before each Cargo/npm/PyPI release, and the grammar closely tracks tree-sitter-c to avoid duplicating shared C syntax rules.

API Design - Consumers interact with the crate through a minimal surface: a single exported LANGUAGE constant (or equivalent per binding) that’s handed to the generic tree-sitter runtime API, so there’s effectively no C++-specific API to learn beyond tree-sitter’s own parser/query interface, keeping integration overhead very low once tree-sitter itself is understood.

Used by 5 apps in this directory

TypeScript
72%
MIT

Claude Context

AI Code Assistants

12,498

An MCP server and VS Code extension by Zilliz that turns your entire codebase into semantically searchable context for Claude Code, Cursor, and Gemini CLI, using vector embeddings and Merkle-tree change detection.

View details
49
Repo Health
71
Technical
71
Dependency
Built with
TypeScript72%
Python13%
JavaScript11%
Updated 1 months ago
JavaScript
51%
Apache 2.0

claude-mem

AI Agents · AI Development

93,347

Give your AI coding agents persistent memory — claude-mem captures everything that happens during sessions, compresses it with AI, and surfaces the right context in every future session automatically.

View details
86
Repo Health
82
Technical
77
Dependency
Built with
JavaScript51%
TypeScript47%
Updated yesterday
Rust
52%
Apache 2.0

cocoindex

Data Engineering · AI Development

11,496

An incremental data indexing engine that keeps AI agent context perpetually fresh by reprocessing only what changed.

View details
86
Repo Health
85
Technical
64
Dependency
Built with
Rust52%
Python48%
Updated 2 days ago
C
86%
MIT

codegraph

Developer Tools · AI Code Assistants

69,843

A pre-indexed code knowledge graph that cuts AI tool calls by 58% and token costs by 16% — auto-syncing, 100% local, works with Claude Code, Cursor, Codex, and more.

View details
82
Repo Health
85
Technical
72
Dependency
Built with
C86%
TypeScript11%
Updated 1 weeks ago
TypeScript
92%
Other

GitNexus

Developer Tools · AI Code Assistants

47,086

Index any codebase into an interactive knowledge graph and give your AI agents deep architectural context via MCP — with zero servers required.

View details
88
Repo Health
86
Technical
73
Dependency
Built with
TypeScript92%
Updated yesterday

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search