Language Support
Overview
sqry organizes its 35 language plugins into two tiers based on analysis depth.
Tier 1 languages receive full AST parsing, symbol extraction, and relation tracking. This means sqry can answer queries about callers, callees, imports, exports, trait/interface implementations (impl:), and class inheritance (inherits:). All cross-file semantic relationships are available for Tier 1 languages.
Tier 2 languages receive symbol extraction and import tracking. These are primarily domain-specific and infrastructure-as-code languages where call-graph analysis is less applicable. They appear in the unified graph and support sqry query, sqry graph stats, and other graph commands, but full caller/callee relation extraction is not performed.
Tier 1 — 28 Languages
Full AST parsing, symbol extraction, and relation tracking (callers, callees, imports, exports, impl/inherits).
| Language | Symbol kinds | Relation tracking | Cross-language support |
|---|---|---|---|
| C | Structs, unions, functions, function pointers | Full | FFI (Rust↔C, C↔C++) |
| C++ | Classes, templates, namespaces, methods | Full | FFI (Rust↔C++, C↔C++) |
| Rust | Functions, structs, traits, impls, enums | Full | FFI (Rust↔C/C++), HTTP |
| Shell/Bash | Functions, command substitution | Full (call tracking) | process_exec |
| Zig | Functions, structs, comptime, pub visibility | Full | — |
| JavaScript | Functions, classes, ES6+ modules, async/await | Full | HTTP (fetch/axios) |
| TypeScript | Functions, interfaces, generics, JSX | Full (incl. return-type) | HTTP (fetch/axios) |
| Dart | Classes, async/await, Flutter widgets | Full | MethodChannel (Flutter) |
| Kotlin | Data classes, coroutines, sealed classes | Full | — |
| Swift | Protocols, extensions, async/await | Full | — |
| Scala | Case classes, traits, implicits | Full | — |
| C# | Classes, LINQ, async, properties | Full | — |
| Go | Interfaces, channels, goroutines | Full | HTTP (route handlers) |
| Java | Classes, annotations, generics, inheritance | Full (incl. return-type) | HTTP (route handlers) |
| Python | Classes, functions, decorators, type hints | Full | HTTP (route handlers) |
| Ruby | Modules, metaprogramming, blocks | Full (incl. signature metadata) | — |
| PHP | Traits, namespaces, Laravel/Symfony | Full | — |
| Lua | Modules, colon-syntax methods, require | Full | — |
| R | Functions, S3/S4 methods, R6 classes | Full (incl. package metadata) | — |
| Groovy | Classes, closures, Gradle tasks | Full | — |
| Elixir | Phoenix, pipe operators, Erlang FFI | Full | — |
| SQL | Tables, views, functions, triggers | Full (table read/write) | db_query |
| Svelte | Props, reactive declarations, store subscriptions | Full (SFC) | — |
| Vue | Composition API, options API, SFC | Full | — |
| HTML | Document structure, script/link imports | Full (import tracking) | — |
| CSS | Selectors, rules, @import | Full (@import tracking) | — |
| Haskell | Module imports, type classes | Full | — |
| Perl | Modules, subroutines | Full (import tracking) | — |
Tier 2 — 7 Languages
Symbol extraction and import tracking. These languages appear in the unified graph and support sqry query and sqry graph stats, but full caller/callee relation extraction is not available.
| Language | Notes |
|---|---|
| Terraform/HCL | Resources, modules, variables, outputs |
| Puppet | Classes, resources, defined types |
| Pulumi | Infrastructure resources, stack definitions |
| Salesforce Apex | Enterprise Apex classes and triggers |
| SAP ABAP | Enterprise ABAP programs and function modules |
| Oracle PL/SQL | Stored procedures and packages (distinct from SQL Tier 1) |
| ServiceNow (Xanadu) | Script Includes, GlideRecord, Xanadu JS platform |
Relation Types
The following relation fields are extracted for Tier 1 languages and available in queries, graph commands, and MCP tools.
| Relation | Tracks | Example query |
|---|---|---|
callers: / callees: | Direct function and method calls | callers:authenticate |
imports: / exports: | Module-level imports and exported symbols | imports:react |
impl: | Trait or interface implementations | impl:Iterator |
inherits: | Class inheritance relationships | inherits:BaseModel |
Relation data is stored in the unified graph snapshot and is available after sqry index. All relation queries work across files — for example, callers:authenticate finds every call site across the entire codebase, regardless of which file or language it originates from (within Tier 1 languages).