Languages and plugins¶
Built-in parsers under plugins/ (registered in PluginRegistry):
| Language | Probe tool | Extract command | JSON under repo | Extensions |
|---|---|---|---|---|
| Rust / Verus | probe-verus |
extract |
.verilib/probes/verus_*.json |
.rs |
| Lean | probe-lean |
extract |
.verilib/probes/lean_*.json |
.lean |
| Aeneas | probe-aeneas |
extract |
.verilib/probes/aeneas_*.json |
.rs, .lean |
Enable languages with ATOMIZER_LANGUAGES (default Rust,Lean,Aeneas).
Design¶
parsers/— schema only (Atom,CodeLocation,ParsedAtoms); Schema 3.0 only.plugins/— language-specific JSON →ParsedAtoms.- Shared persistence — all languages write the same atom / dependency tables.
Lookup:
from plugins import get_parser_for_language, get_parser_for_file
get_parser_for_language("Rust") # VerusParser
get_parser_for_file("Foo.lean") # LeanParser
Adding a language¶
Upstream README “Adding a Language Plugin”: implement LanguageParser, register in plugins/registry.py, wire probe binary in config.py, add to ATOMIZER_LANGUAGES. Persistence and retry logic stay shared.
Probe sources (science team)¶
Link only — not first-class hub sections: