Language support
Languages (61)
rgctl ships with 24 Tier-1 custom plugins (handler = "custom", verified by *-ast-coverage.json manifests) and 37 Tier-2 declarative query plugins (handler = "queries", powered by QueryLanguagePlugin and queries/tags.scm).
Architecture & contributor docs: Tier 1 language support · Tier 2 language support. Plugin crates live under crates/rgctl-lang-*.
Tier 1 — Custom AST Plugins (24)
Tier 1 requirements & Layer F checklist →Dedicated LanguagePlugin implementations with grammar-verified *-ast-coverage.json manifests, call graphs, inheritance/MRO, CFG/PDG, taint rules, and hybrid CPG support.
| Language | Extensions | Grammar | Kinds | Handled | Skip |
|---|---|---|---|---|---|
| Bash | .sh, .bash | tree-sitter-bash@0.25.1 | 59 | 7 | 52 |
| C | .c, .h | tree-sitter-c@0.24.2 | 125 | 37 | 88 |
| C# | .cs | tree-sitter-c-sharp@0.23.5 | 215 | 55 | 160 |
| C++ | .cpp, .cc, .cxx, .hpp, .hh, .hxx | tree-sitter-cpp@0.23.4 | 206 | 58 | 148 |
| Dart | .dart | tree-sitter-dart@0.2.0 | 221 | 19 | 202 |
| Elixir | .ex, .exs | tree-sitter-elixir@0.3.5 | 45 | 6 | 39 |
| ERB | .erb | tree-sitter-embedded-template@0.25.0 | 8 | 4 | 4 |
| Go | .go | tree-sitter-go@0.25.0 | 107 | 42 | 65 |
| Groovy | .groovy, .gradle | tree-sitter-groovy@0.1.2 | 150 | 70 | 80 |
| HCL | .hcl, .tf, .tfvars | tree-sitter-hcl@1.1.0 | 64 | 3 | 61 |
| Java | .java | tree-sitter-java@0.23.5 | 142 | 56 | 86 |
| JavaScript | .js, .jsx, .mjs | tree-sitter-javascript@0.25.0 | 114 | 54 | 60 |
| Kotlin | .kt, .kts | tree-sitter-kotlin-ng@1.1.0 | 114 | 43 | 71 |
| Lua | .lua | tree-sitter-lua@0.5.0 | 47 | 10 | 37 |
| Markdown | — | tree-sitter-md@0.5.3 | 51 | 6 | 45 |
| PHP | .php | tree-sitter-php@0.24.2 | 157 | 55 | 102 |
| Puppet | .pp | tree-sitter-puppet@1.3.0 | 58 | 44 | 14 |
| Python | .py, .pyw | tree-sitter-python@0.25.0 | 123 | 55 | 68 |
| Ruby | .rb | tree-sitter-ruby@0.23.1 | 134 | 87 | 47 |
| Rust | .rs | tree-sitter-rust@0.24.2 | 163 | 56 | 107 |
| Scala | .scala, .sc | tree-sitter-scala@0.26.3 | 171 | 19 | 152 |
| SQL | .sql | tree-sitter-sql@0.0.2 | 523 | 7 | 516 |
| Swift | .swift | tree-sitter-swift@0.7.4 | 188 | 19 | 169 |
| TypeScript | .ts, .tsx | tree-sitter-typescript@0.23.2 | 177 | 70 | 107 |
Tier 1 handler legend
- SymbolEmits graph symbols / nodes (functions, types, …).
- RelationEmits typed edges (calls, imports, heritage, …).
- CfgStatementFeeds CFG / control-flow construction.
- AstSkeletonKept for analysis skeleton / field-write paths.
- LiteralLeaf / literal tokens walked but not promoted to symbols.
- SkipNamed grammar kind intentionally not mapped.
Tier 2 — Declarative Query Plugins (37)
How Tier 2 tags.scm queries work →Driven by QueryLanguagePlugin (rgctl-lang-runtime) and precompiled queries/tags.scm files validated against the Tier-2 capture vocabulary (@definition.*, @reference.call, @reference.class, @reference.implementation, @import.path).
| Language | Extensions | Grammar Crate | Captures | Function / Class Kinds |
|---|---|---|---|---|
| Clojure | .clj, .cljs, .cljc | tree-sitter-clojure | 6 captures | list_lit |
| CMake | .cmake | tree-sitter-cmake | 4 captures | function_def |
| CSS | .css | tree-sitter-css | 4 captures | keyframes_statement, rule_set |
| CUDA | .cu, .cuh | tree-sitter-cuda | 5 captures | function_definition, struct_specifier, class_specifier |
| D | .d | tree-sitter-d | 7 captures | function_declaration, class_declaration, struct_declaration |
| Elm | .elm | tree-sitter-elm | 7 captures | value_declaration, type_declaration |
| Emacs Lisp | .el | tree-sitter-elisp | 6 captures | function_definition |
| Erlang | .erl, .hrl | tree-sitter-erlang | 6 captures | fun_decl, function_clause, record_decl |
| F# | .fs, .fsi, .fsx | tree-sitter-fsharp | 6 captures | function_or_value_defn, type_definition |
| Fortran | .f90, .f95, .f03, .f08, .F90 | tree-sitter-fortran | 6 captures | function, subroutine, derived_type_definition |
| GDScript | .gd | tree-sitter-gdscript | 4 captures | function_definition, class_definition |
| Gleam | .gleam | tree-sitter-gleam | 6 captures | function, type_definition |
| GLSL | .glsl, .vert, .frag, .comp | tree-sitter-glsl | 4 captures | function_definition, struct_specifier |
| GraphQL | .graphql, .gql | tree-sitter-graphql | 5 captures | operation_definition, fragment_definition, object_type_definition |
| Haskell | .hs | tree-sitter-haskell | 8 captures | function, class, data_type, newtype |
| HTML | .html, .htm | tree-sitter-html | 3 captures | script_element, element |
| JSON | .json | tree-sitter-json | 2 captures | object |
| Julia | .jl | tree-sitter-julia | 7 captures | function_definition, struct_definition |
| Makefile | .mk, .mak | tree-sitter-make | 4 captures | rule |
| Nix | .nix | tree-sitter-nix | 3 captures | function_expression |
| Objective-C | .m, .mm | tree-sitter-objc | 5 captures | function_definition, method_definition, class_interface, class_implementation |
| OCaml | .ml, .mli | tree-sitter-ocaml | 6 captures | value_definition, class_definition |
| Odin | .odin | tree-sitter-odin | 7 captures | procedure_declaration, struct_declaration |
| PowerShell | .ps1, .psm1 | tree-sitter-powershell | 4 captures | function_statement, class_statement |
| Prisma | .prisma | tree-sitter-prisma | 4 captures | model_declaration, enum_declaration |
| Protocol Buffers | .proto | tree-sitter-proto | 4 captures | rpc, message |
| R | .r, .R | tree-sitter-r | 3 captures | function_definition |
| Racket | .rkt | tree-sitter-racket | 6 captures | list |
| Scheme | .scm, .ss | tree-sitter-scheme | 5 captures | list |
| Solidity | .sol | tree-sitter-solidity | 4 captures | function_definition, contract_declaration |
| Starlark | .star, .bzl | tree-sitter-starlark | 5 captures | function_definition |
| Svelte | .svelte | tree-sitter-svelte-ng | 3 captures | script_element, element |
| TOML | .toml | tree-sitter-toml-ng | 3 captures | table |
| Verilog / SystemVerilog | .v, .sv, .svh | tree-sitter-verilog | 6 captures | function_declaration, task_declaration, class_declaration, module_declaration |
| VHDL | .vhd, .vhdl | tree-sitter-vhdl | 6 captures | subprogram_definition, component_declaration |
| YAML | .yaml, .yml | tree-sitter-yaml | 2 captures | — |
| Zig | .zig, .zon | tree-sitter-zig | 8 captures | function_declaration, struct_declaration |