Skip to main content
Version: 1.0.5

Language support

Astria registers 25 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.

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_declarationfunction_declaration, generator_function_declaration, method_definition, 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

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.