Skip to content

Supported Languages

symtrace v0.5.0 provides first-class AST parsing and structural analysis for 13 programming languages and data formats.

LanguageExtensionsKey Entity Identifiers Analyzed
Rust.rs (Rust 2021 & 2024 Edition)function_item, struct_item, enum_item, impl_item, trait_item, macro_definition
JavaScript.js, .jsx, .mjs, .cjsfunction_declaration, class_declaration, method_definition, arrow_function
TypeScript / TSX.ts, .tsxfunction_declaration, class_declaration, interface_declaration, type_alias, jsx_element
Python.py, .pyifunction_definition, class_definition, async_function_definition
Java.javamethod_declaration, class_declaration, interface_declaration, constructor_declaration
C.c, .hfunction_definition, struct_specifier, enum_specifier, type_definition
C++.cpp, .hpp, .cc, .cxx, .h++function_definition, class_specifier, namespace_definition, template_declaration
Go.gofunction_declaration, method_declaration, type_declaration, type_spec
C#.csmethod_declaration, class_declaration, interface_declaration, property_declaration
Ruby.rbmethod, class, module
PHP.phpmethod_declaration, class_declaration, function_definition
JSON.json, .jsoncpair, object, array

In addition to built-in entity node types, you can define custom AST query targets using standard Tree-Sitter .scm rules placed in .symtrace/queries/. See Custom Query DSL Guide →.

Files with unsupported file extensions are skipped gracefully: zero errors, zero clutter. You can safely run symtrace against any repository regardless of content.

Language mapping is determined strictly by file extension. There is no runtime shebang parsing or content sniffing, guaranteeing fast and deterministic detection.