Skip to main content
Version: 1.5.0

Language support

Astria registers 42 language configurations. Discovery and parser selection share the registry in crates/astria-core/src/languages.rs.

The table lists configured tree-sitter node kinds, not a promise of complete language semantics or successful resolution of every construct. None means no node kind is configured for that category. Classes include language-specific containers such as HCL blocks; parser reuse and shared AST walker rules may limit extraction. Imports and calls are syntax candidates, not guarantees of resolved dependency edges. Closure kinds indicate configured anonymous-function extraction.

AST source lines are one-based. Embedded JavaScript/TypeScript lines in Vue, Svelte, and Astro are translated back to their original component file. Call resolution retains lexical scopes, supported import paths, and language evidence. Unknown instance receivers remain unresolved: a call such as row.get() cannot bind to an unrelated class method named get. Explicit self/this calls use the enclosing class; statically qualified paths and exact assigned JavaScript member declarations can resolve when their evidence selects one declaration. These AST bindings remain name inference, not compiler-proven call targets; use a standard SCIP index for compiler-provided symbol relationships.

Extensionless scripts are discovered from a bounded, complete shebang line, including supported versioned interpreters such as python3.12 and node22. Discovery and parser/cache selection use the same language registration. Explicit project language overrides remain available through .astria.toml.

Additional declaration handling includes Kotlin type aliases, C# delegates, Dart typedefs, and Swift macros. These special walker paths are not all represented by the container/function columns below. Type references and Swift macro calls resolve only when supported evidence selects a unique declaration.

LanguageDiscovered extensionsClass/container kindsFunction kindsImport kindsCall kindClosure kinds
Python.pyclass_definitionfunction_definitionimport_statement, import_from_statementcallNone
JavaScript.js, .jsx, .mjsclass_declarationfunction_declaration, generator_function_declaration, method_definition, function_expression, generator_function, arrow_functionimport_statement, import_declarationcall_expressionNone
TypeScript.ts, .tsxclass_declaration, interface_declarationfunction_declaration, generator_function_declaration, method_definition, method_signature, function_expression, generator_function, arrow_functionimport_statement, import_declarationcall_expressionNone
Rust.rsstruct_item, enum_item, trait_item, impl_itemfunction_item, function_signature_itemuse_declarationcall_expressionNone
Go.gotype_declarationfunction_declaration, method_declarationimport_declarationcall_expressionNone
Java.javaclass_declaration, interface_declaration, enum_declarationmethod_declaration, constructor_declarationimport_declarationmethod_invocationNone
C.c, .hstruct_specifier, enum_specifierfunction_definitionpreproc_includecall_expressionNone
C++.cpp, .cc, .cxx, .hppclass_specifier, struct_specifier, enum_specifierfunction_definitionpreproc_includecall_expressionNone
Ruby.rb, .rakeclass, module, singleton_classmethod, singleton_methodcallcallNone
Swift.swiftclass_declaration, struct_declaration, enum_declaration, protocol_declarationfunction_declarationimport_declarationcall_expressionNone
Kotlin.kt, .ktsclass_declaration, object_declaration, interface_declaration, enum_declarationfunction_declarationimport_headercall_expressionNone
Scala.scalaclass_definition, object_definition, trait_definition, enum_definitionfunction_definition, function_declarationimport_declarationcall_expressionNone
PHP.phpclass_declaration, interface_declaration, trait_declaration, enum_declarationfunction_definition, method_declaration, declaration_listnamespace_use_declaration, namespace_definitionfunction_call_expressionanonymous_function, arrow_function
C#.csclass_declaration, struct_declaration, interface_declaration, enum_declarationmethod_declaration, constructor_declaration, local_function_statementusing_directiveinvocation_expressionNone
Lua.luaNonefunction_declaration, function_definitionNonefunction_callNone
Haskell.hsclass, data_type, newtype, type_aliasdecl, signatureimportapplyNone
Elixir.ex, .exscallcallcallcallNone
Shell.sh, .bashNonefunction_definitionNonecommandNone
Dart.dartclass_definition, mixin_declaration, extension_declaration, enum_declarationfunction_expression, method_declarationimport_specificationcall_expressionNone
Zig.zigstruct_declaration, enum_declaration, union_declaration, opaque_declarationfunction_declaration, test_declarationusing_namespace_declarationcall_expressionNone
Terraform/HCL.tf, .tfvars, .hclblockNoneNonefunction_callNone
PowerShell.ps1, .psm1, .psd1class_statementfunction_statement, filter_statementusing_statementcommandNone
Verilog/SystemVerilog.v, .sv, .svh, .vhmodule_declaration, interface_declaration, program_declaration, class_declarationfunction_body_declaration, task_body_declarationimport_declarationsubroutine_callNone
Metal.metalstruct_specifier, class_specifierfunction_definitionpreproc_includecall_expressionNone
CSS.css, .scssrule_setNoneimport_statementcall_expressionNone
Astro.astroNoneNoneNoneNoneNone
Common Lisp.lisp, .cl, .lsp, .asdNonedefun_headerNonelist_litNone
DreamMaker.dmtype_definitionproc_definition, proc_overridepreproc_includecall_expressionNone
Fortran.f90, .f95, .f03, .f08, .f, .forderived_type_definitionfunction_statement, subroutine_statementimport_statementcall_expressionNone
Groovy.groovy, .gradleclass_declaration, interface_declaration, enum_declarationmethod_declaration, function_definition, constructor_declarationimport_declarationmethod_invocationclosure
Julia.jlmodule_definition, struct_definitionfunction_definition, macro_definitionimport_statement, using_statementcall_expressionarrow_function_expression
Luau.luauNonefunction_declaration, function_definitionNonefunction_callNone
Objective-C.m, .mmclass_implementation, class_interfacemethod_definition, function_definitionpreproc_include, module_importcall_expressionNone
OCaml.mlmodule_definition, class_definition, exception_definitionlet_bindingopen_module, include_moduleapplication_expressionNone
OCaml Interface.mlimodule_definitionvalue_specificationopen_moduleapplication_expressionNone
R.rNonefunction_definitionNonecallNone
Solidity.solcontract_declaration, interface_declaration, library_declaration, struct_declaration, enum_declarationfunction_definition, modifier_definition, constructor_definitionimport_directive, using_directivecall_expressionNone
SQL.sqlcreate_table, create_view, create_materialized_view, create_schema, create_databasecreate_function, create_trigger, create_queryNoneinvocationNone
VB.NET.vbNoneNoneNoneNoneNone
Pascal/Delphi.pas, .dpr, .dpk, .incNoneNoneNoneNoneNone
Vue.vueNoneNoneNoneNoneNone
Svelte.svelteNoneNoneNoneNoneNone

Adding a language​

  1. Add the grammar dependency and a parser config module in crates/astria-extract/src/langs/.
  2. Export the module from langs/mod.rs and add one registration in crates/astria-core/src/languages.rs. Reference that registration for the config's name and extensions.
  3. Map only AST kinds handled by the shared extraction walker.
  4. Run node scripts/generate-language-support.mjs to regenerate this table. The docs-sync guard rejects stale generated content.