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).

LanguageSymbol kindsRelation trackingCross-language support
CStructs, unions, functions, function pointersFullFFI (Rust↔C, C↔C++)
C++Classes, templates, namespaces, methodsFullFFI (Rust↔C++, C↔C++)
RustFunctions, structs, traits, impls, enumsFullFFI (Rust↔C/C++), HTTP
Shell/BashFunctions, command substitutionFull (call tracking)process_exec
ZigFunctions, structs, comptime, pub visibilityFull
JavaScriptFunctions, classes, ES6+ modules, async/awaitFullHTTP (fetch/axios)
TypeScriptFunctions, interfaces, generics, JSXFull (incl. return-type)HTTP (fetch/axios)
DartClasses, async/await, Flutter widgetsFullMethodChannel (Flutter)
KotlinData classes, coroutines, sealed classesFull
SwiftProtocols, extensions, async/awaitFull
ScalaCase classes, traits, implicitsFull
C#Classes, LINQ, async, propertiesFull
GoInterfaces, channels, goroutinesFullHTTP (route handlers)
JavaClasses, annotations, generics, inheritanceFull (incl. return-type)HTTP (route handlers)
PythonClasses, functions, decorators, type hintsFullHTTP (route handlers)
RubyModules, metaprogramming, blocksFull (incl. signature metadata)
PHPTraits, namespaces, Laravel/SymfonyFull
LuaModules, colon-syntax methods, requireFull
RFunctions, S3/S4 methods, R6 classesFull (incl. package metadata)
GroovyClasses, closures, Gradle tasksFull
ElixirPhoenix, pipe operators, Erlang FFIFull
SQLTables, views, functions, triggersFull (table read/write)db_query
SvelteProps, reactive declarations, store subscriptionsFull (SFC)
VueComposition API, options API, SFCFull
HTMLDocument structure, script/link importsFull (import tracking)
CSSSelectors, rules, @importFull (@import tracking)
HaskellModule imports, type classesFull
PerlModules, subroutinesFull (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.

LanguageNotes
Terraform/HCLResources, modules, variables, outputs
PuppetClasses, resources, defined types
PulumiInfrastructure resources, stack definitions
Salesforce ApexEnterprise Apex classes and triggers
SAP ABAPEnterprise ABAP programs and function modules
Oracle PL/SQLStored 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.

RelationTracksExample query
callers: / callees:Direct function and method callscallers:authenticate
imports: / exports:Module-level imports and exported symbolsimports:react
impl:Trait or interface implementationsimpl:Iterator
inherits:Class inheritance relationshipsinherits: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).