Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Language support

oxcode indexes 20 languages on one pipeline, plus Liquid recognized. The resolver, graph schema, storage, and PageRank context are language-neutral; only the extractor changes per language. Run oxcode languages to list the registered extractors.

High-fidelity (hand-written extractors)

Rust, Go, and TypeScript / JavaScript (.ts / .tsx / .js / .jsx / .mts / .cts / .mjs / .cjs).

These resolve receiver-typed method calls, qualified names, and imports precisely.

Query-driven (generic engine)

Python, Java, C, C++, C#, PHP, Ruby, Swift, Kotlin, Scala, Dart, Lua, Luau, Objective-C, and Pascal / Delphi.

Each ships a tree-sitter query (.scm) and a profile entry. They extract symbols, span-nested containment, and approximate call edges that resolve only at the scoped/simple tiers (no receiver typing), so some edges are marked ambiguous. Qualified names use :: internally regardless of the language's own separator.

Embedded script

Svelte and Vue. The <script> block is located and the rest of the file is masked to whitespace, preserving byte and line offsets, then the TypeScript extractor runs over the masked file, so symbols land at offsets accurate to the original component. Vue extracts <script setup> and top-level functions today; the Options API is a follow-up.

Recognized

Liquid is detected and reported as skipped rather than silently dropped. Symbol extraction is a follow-up.

Adding and promoting languages

  • A query-driven language is promoted to high fidelity by adding a hand-written extractor.
  • A new query-driven language is added with a tree-sitter query plus a profile entry (see crates/oxcode-core/src/extract/profiles.rs).