mirror of
https://github.com/DeusData/codebase-memory-mcp.git
synced 2026-11-04 10:48:20 +00:00
AsciiDoc (.adoc, .asciidoc) is now indexed, without a grammar like PDF: a
Section per heading (`=` .. `======`, or `#`), the text up to the next
heading as its docstring, delimited blocks respected (listing, literal,
comment, passthrough, example, sidebar, quote, table, fences). Its
references become MENTIONS edges, via "asciidoc", from the section they are
written in:
include include::target[...] -- Asciidoctor's preprocessor directive,
read in every block but a comment block; the page's own
attributes, then the Antora component's and the playbook's,
substituted
attribute an {attribute} whose value is an Antora javadoc link
({javadoc-root}/<module>/<package path>/<Type>.html[#member])
binds the Java or Kotlin type, or its one member, that the
repository's main sources declare under that path
code_path, monospace spans naming a path or a qualified name (the
code_name Markdown code-span rules)
The rules are the field test's (H8 Asciidoctor/Antora harvester, audited
~100 % precise): an Antora resource ID ([component:][module:]family$path)
names <component>/modules/<module>/<family dir>/<path>, or the file a
collector scan contributes there (a scan of build output is generated: no
row); any other target is relative to the including file. `lines=` and
`tag=`/`tags=` regions bind by H8's rule: edge blank and comment lines
trimmed, the innermost enclosing definition, unless that is a type (or there
is none) and the definitions inside cover every other line (an annotation
right above one counts) -- then that definition; tag regions come from the
included file's own `tag::x[]` / `end::x[]` comments, read from that indexed
file; a tag the file lacks binds the file. One reference makes one edge: a
region holding several top-level definitions binds the file.
Antora settings travel as YAML scope blobs (antora.yml: component name,
asciidoc attributes, collector scans; antora-playbook*.yml: attributes),
read as text, so an incremental run resolves as a full one; a change to them
is GLOBAL. AsciiDoc joins the documents bound by lines: a body edit of an
included file re-resolves its pages.
Also: the Markdown resolver's module index no longer takes AsciiDoc or PDF
files for code modules.
Proof on junit-team/junit-framework at 6c8ca116 (H8's corpus and commit),
C against H8's recorded links: javadoc attributes 362/362 identical;
includes 292 identical, 60 bind the type enclosing the several definitions
H8 names, 7 regions with several top-level definitions bind the file. 317
sections, 668 edges, no include rows (9 generated partials, 1 file type the
indexer does not read); monospace spans 30/30 correct by hand. 8.3 s for the
whole index.
Tests: suite doc_links_adoc (structure and tokens, the Antora blob, the
pipeline: resource IDs through a collector scan, tag regions, a region with
its imports binding its class, lines=, javadoc attributes, spans; incremental
== full: a moved tag region, a changed component attribute). Revert check:
without H8's region rule and without AsciiDoc among the line-bound documents
exactly their assertions fail (observed).
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2785 lines
173 KiB
C
2785 lines
173 KiB
C
#include "lang_specs.h"
|
|
#include "cbm.h" // CBMLanguage, CBM_LANG_*
|
|
#include "tree_sitter/api.h" // TSLanguage
|
|
|
|
// -- Extern declarations for tree-sitter grammar functions --
|
|
// These symbols are defined in the grammar C code compiled by Go tree-sitter modules.
|
|
extern const TSLanguage *tree_sitter_go(void);
|
|
extern const TSLanguage *tree_sitter_python(void);
|
|
extern const TSLanguage *tree_sitter_javascript(void);
|
|
extern const TSLanguage *tree_sitter_typescript(void);
|
|
extern const TSLanguage *tree_sitter_tsx(void);
|
|
extern const TSLanguage *tree_sitter_rust(void);
|
|
extern const TSLanguage *tree_sitter_java(void);
|
|
extern const TSLanguage *tree_sitter_cpp(void);
|
|
extern const TSLanguage *tree_sitter_c_sharp(void);
|
|
extern const TSLanguage *tree_sitter_php_only(void);
|
|
extern const TSLanguage *tree_sitter_lua(void);
|
|
extern const TSLanguage *tree_sitter_scala(void);
|
|
extern const TSLanguage *tree_sitter_kotlin(void);
|
|
extern const TSLanguage *tree_sitter_ruby(void);
|
|
extern const TSLanguage *tree_sitter_c(void);
|
|
extern const TSLanguage *tree_sitter_bash(void);
|
|
extern const TSLanguage *tree_sitter_zig(void);
|
|
extern const TSLanguage *tree_sitter_elixir(void);
|
|
extern const TSLanguage *tree_sitter_haskell(void);
|
|
extern const TSLanguage *tree_sitter_ocaml(void);
|
|
extern const TSLanguage *tree_sitter_objc(void);
|
|
extern const TSLanguage *tree_sitter_swift(void);
|
|
extern const TSLanguage *tree_sitter_dart(void);
|
|
extern const TSLanguage *tree_sitter_perl(void);
|
|
extern const TSLanguage *tree_sitter_groovy(void);
|
|
extern const TSLanguage *tree_sitter_erlang(void);
|
|
extern const TSLanguage *tree_sitter_r(void);
|
|
extern const TSLanguage *tree_sitter_html(void);
|
|
extern const TSLanguage *tree_sitter_css(void);
|
|
extern const TSLanguage *tree_sitter_scss(void);
|
|
extern const TSLanguage *tree_sitter_yaml(void);
|
|
extern const TSLanguage *tree_sitter_toml(void);
|
|
extern const TSLanguage *tree_sitter_hcl(void);
|
|
extern const TSLanguage *tree_sitter_sql(void);
|
|
extern const TSLanguage *tree_sitter_dockerfile(void);
|
|
// New languages (v0.5 expansion)
|
|
extern const TSLanguage *tree_sitter_clojure(void);
|
|
extern const TSLanguage *tree_sitter_fsharp(void);
|
|
extern const TSLanguage *tree_sitter_julia(void);
|
|
extern const TSLanguage *tree_sitter_vim(void);
|
|
extern const TSLanguage *tree_sitter_nix(void);
|
|
extern const TSLanguage *tree_sitter_commonlisp(void);
|
|
extern const TSLanguage *tree_sitter_elm(void);
|
|
extern const TSLanguage *tree_sitter_fortran(void);
|
|
extern const TSLanguage *tree_sitter_cuda(void);
|
|
extern const TSLanguage *tree_sitter_COBOL(void);
|
|
extern const TSLanguage *tree_sitter_verilog(void);
|
|
extern const TSLanguage *tree_sitter_elisp(void);
|
|
extern const TSLanguage *tree_sitter_json(void);
|
|
extern const TSLanguage *tree_sitter_xml(void);
|
|
extern const TSLanguage *tree_sitter_markdown(void);
|
|
extern const TSLanguage *tree_sitter_make(void);
|
|
extern const TSLanguage *tree_sitter_cmake(void);
|
|
extern const TSLanguage *tree_sitter_proto(void);
|
|
extern const TSLanguage *tree_sitter_graphql(void);
|
|
extern const TSLanguage *tree_sitter_vue(void);
|
|
extern const TSLanguage *tree_sitter_svelte(void);
|
|
extern const TSLanguage *tree_sitter_meson(void);
|
|
extern const TSLanguage *tree_sitter_glsl(void);
|
|
extern const TSLanguage *tree_sitter_ini(void);
|
|
// Scientific/math languages
|
|
extern const TSLanguage *tree_sitter_matlab(void);
|
|
extern const TSLanguage *tree_sitter_lean(void);
|
|
extern const TSLanguage *tree_sitter_form(void);
|
|
extern const TSLanguage *tree_sitter_magma(void);
|
|
extern const TSLanguage *tree_sitter_wolfram(void);
|
|
|
|
// New languages
|
|
extern const TSLanguage *tree_sitter_solidity(void);
|
|
extern const TSLanguage *tree_sitter_typst(void);
|
|
extern const TSLanguage *tree_sitter_gdscript(void);
|
|
extern const TSLanguage *tree_sitter_gleam(void);
|
|
extern const TSLanguage *tree_sitter_powershell(void);
|
|
extern const TSLanguage *tree_sitter_pascal(void);
|
|
extern const TSLanguage *tree_sitter_d(void);
|
|
extern const TSLanguage *tree_sitter_scheme(void);
|
|
extern const TSLanguage *tree_sitter_chialisp(void);
|
|
extern const TSLanguage *tree_sitter_fennel(void);
|
|
extern const TSLanguage *tree_sitter_fish(void);
|
|
extern const TSLanguage *tree_sitter_awk(void);
|
|
extern const TSLanguage *tree_sitter_zsh(void);
|
|
extern const TSLanguage *tree_sitter_tcl(void);
|
|
extern const TSLanguage *tree_sitter_ada(void);
|
|
extern const TSLanguage *tree_sitter_agda(void);
|
|
extern const TSLanguage *tree_sitter_racket(void);
|
|
extern const TSLanguage *tree_sitter_odin(void);
|
|
extern const TSLanguage *tree_sitter_rescript(void);
|
|
extern const TSLanguage *tree_sitter_purescript(void);
|
|
extern const TSLanguage *tree_sitter_nickel(void);
|
|
extern const TSLanguage *tree_sitter_crystal(void);
|
|
extern const TSLanguage *tree_sitter_teal(void);
|
|
extern const TSLanguage *tree_sitter_hare(void);
|
|
extern const TSLanguage *tree_sitter_pony(void);
|
|
extern const TSLanguage *tree_sitter_luau(void);
|
|
extern const TSLanguage *tree_sitter_qmljs(void);
|
|
extern const TSLanguage *tree_sitter_cfscript(void);
|
|
extern const TSLanguage *tree_sitter_cfml(void);
|
|
extern const TSLanguage *tree_sitter_janet_simple(void);
|
|
extern const TSLanguage *tree_sitter_sway(void);
|
|
extern const TSLanguage *tree_sitter_nasm(void);
|
|
extern const TSLanguage *tree_sitter_asm(void);
|
|
extern const TSLanguage *tree_sitter_astro(void);
|
|
extern const TSLanguage *tree_sitter_blade(void);
|
|
extern const TSLanguage *tree_sitter_just(void);
|
|
extern const TSLanguage *tree_sitter_gotmpl(void);
|
|
extern const TSLanguage *tree_sitter_templ(void);
|
|
extern const TSLanguage *tree_sitter_liquid(void);
|
|
extern const TSLanguage *tree_sitter_jinja2(void);
|
|
extern const TSLanguage *tree_sitter_prisma(void);
|
|
extern const TSLanguage *tree_sitter_hyprlang(void);
|
|
extern const TSLanguage *tree_sitter_dotenv(void);
|
|
extern const TSLanguage *tree_sitter_diff(void);
|
|
extern const TSLanguage *tree_sitter_wgsl(void);
|
|
extern const TSLanguage *tree_sitter_kdl(void);
|
|
extern const TSLanguage *tree_sitter_json5(void);
|
|
extern const TSLanguage *tree_sitter_jsonnet(void);
|
|
extern const TSLanguage *tree_sitter_ron(void);
|
|
extern const TSLanguage *tree_sitter_thrift(void);
|
|
extern const TSLanguage *tree_sitter_capnp(void);
|
|
extern const TSLanguage *tree_sitter_properties(void);
|
|
extern const TSLanguage *tree_sitter_ssh_config(void);
|
|
extern const TSLanguage *tree_sitter_bibtex(void);
|
|
extern const TSLanguage *tree_sitter_starlark(void);
|
|
extern const TSLanguage *tree_sitter_bicep(void);
|
|
extern const TSLanguage *tree_sitter_csv(void);
|
|
extern const TSLanguage *tree_sitter_requirements(void);
|
|
extern const TSLanguage *tree_sitter_hlsl(void);
|
|
extern const TSLanguage *tree_sitter_vhdl(void);
|
|
extern const TSLanguage *tree_sitter_systemverilog(void);
|
|
extern const TSLanguage *tree_sitter_devicetree(void);
|
|
extern const TSLanguage *tree_sitter_linkerscript(void);
|
|
extern const TSLanguage *tree_sitter_gn(void);
|
|
extern const TSLanguage *tree_sitter_kconfig(void);
|
|
extern const TSLanguage *tree_sitter_bitbake(void);
|
|
extern const TSLanguage *tree_sitter_smali(void);
|
|
extern const TSLanguage *tree_sitter_tablegen(void);
|
|
extern const TSLanguage *tree_sitter_ispc(void);
|
|
extern const TSLanguage *tree_sitter_cairo(void);
|
|
extern const TSLanguage *tree_sitter_move(void);
|
|
extern const TSLanguage *tree_sitter_squirrel(void);
|
|
extern const TSLanguage *tree_sitter_func(void);
|
|
extern const TSLanguage *tree_sitter_regex(void);
|
|
extern const TSLanguage *tree_sitter_jsdoc(void);
|
|
extern const TSLanguage *tree_sitter_rst(void);
|
|
extern const TSLanguage *tree_sitter_beancount(void);
|
|
extern const TSLanguage *tree_sitter_mermaid(void);
|
|
extern const TSLanguage *tree_sitter_puppet(void);
|
|
extern const TSLanguage *tree_sitter_po(void);
|
|
extern const TSLanguage *tree_sitter_gitattributes(void);
|
|
extern const TSLanguage *tree_sitter_gitignore(void);
|
|
extern const TSLanguage *tree_sitter_slang(void);
|
|
extern const TSLanguage *tree_sitter_llvm(void);
|
|
extern const TSLanguage *tree_sitter_smithy(void);
|
|
extern const TSLanguage *tree_sitter_wit(void);
|
|
extern const TSLanguage *tree_sitter_tlaplus(void);
|
|
extern const TSLanguage *tree_sitter_pkl(void);
|
|
extern const TSLanguage *tree_sitter_gomod(void);
|
|
extern const TSLanguage *tree_sitter_apex(void);
|
|
extern const TSLanguage *tree_sitter_soql(void);
|
|
extern const TSLanguage *tree_sitter_sosl(void);
|
|
extern const TSLanguage *tree_sitter_pine(void);
|
|
extern const TSLanguage *tree_sitter_mojo(void);
|
|
extern const TSLanguage *tree_sitter_objectscript_udl(void);
|
|
extern const TSLanguage *tree_sitter_objectscript_routine(void);
|
|
extern const TSLanguage *tree_sitter_arkts(void);
|
|
extern const TSLanguage *tree_sitter_plsql(void);
|
|
|
|
// -- Empty sentinel --
|
|
static const char *empty_types[] = {NULL};
|
|
|
|
// ==================== GO ====================
|
|
static const char *go_func_types[] = {"function_declaration", "method_declaration", "method_elem",
|
|
"func_literal", NULL};
|
|
static const char *go_class_types[] = {"type_spec", "type_alias", "type_declaration", NULL};
|
|
static const char *go_field_types[] = {"field_declaration", NULL};
|
|
static const char *go_module_types[] = {"source_file", NULL};
|
|
static const char *go_call_types[] = {"call_expression", NULL};
|
|
static const char *go_import_types[] = {"import_declaration", "import", NULL};
|
|
static const char *go_branch_types[] = {"if_statement",
|
|
"for_statement",
|
|
"expression_switch_statement",
|
|
"type_switch_statement",
|
|
"select_statement",
|
|
"expression_case",
|
|
"type_case",
|
|
"communication_case",
|
|
"default_case",
|
|
"defer_statement",
|
|
"go_statement",
|
|
NULL};
|
|
static const char *go_var_types[] = {"var_declaration", "const_declaration", NULL};
|
|
static const char *go_assign_types[] = {"assignment_statement", "short_var_declaration", NULL};
|
|
|
|
// ==================== PYTHON ====================
|
|
static const char *py_func_types[] = {"function_definition", NULL};
|
|
static const char *py_class_types[] = {"class_definition", NULL};
|
|
static const char *py_module_types[] = {"module", NULL};
|
|
static const char *py_call_types[] = {"call", NULL};
|
|
static const char *py_import_types[] = {"import_statement", "import", NULL};
|
|
static const char *py_import_from_types[] = {"import_from_statement", "future_import_statement",
|
|
NULL};
|
|
static const char *py_branch_types[] = {
|
|
"if_statement", "for_statement", "while_statement", "try_statement",
|
|
"except_clause", "with_statement", "elif_clause", NULL};
|
|
static const char *py_var_types[] = {"assignment", "augmented_assignment", NULL};
|
|
static const char *py_throw_types[] = {"raise_statement", NULL};
|
|
static const char *py_decorator_types[] = {"decorator", NULL};
|
|
|
|
// ==================== JAVASCRIPT ====================
|
|
static const char *js_func_types[] = {"function_declaration", "generator_function_declaration",
|
|
"function_expression", "arrow_function",
|
|
"method_definition", NULL};
|
|
static const char *js_class_types[] = {"class_declaration", "class", NULL};
|
|
static const char *js_module_types[] = {"program", NULL};
|
|
static const char *js_call_types[] = {"call_expression", "new_expression", NULL};
|
|
static const char *js_import_types[] = {"import_statement", "export_statement", "import",
|
|
"extends", "require", NULL};
|
|
static const char *js_branch_types[] = {"if_statement",
|
|
"for_statement",
|
|
"for_in_statement",
|
|
"while_statement",
|
|
"switch_statement",
|
|
"switch_case",
|
|
"switch_default",
|
|
"try_statement",
|
|
"catch_clause",
|
|
"do_statement",
|
|
NULL};
|
|
static const char *js_var_types[] = {"lexical_declaration", "variable_declaration", NULL};
|
|
static const char *js_throw_types[] = {"throw_statement", NULL};
|
|
|
|
// ==================== TYPESCRIPT ====================
|
|
static const char *ts_func_types[] = {"function_declaration",
|
|
"generator_function_declaration",
|
|
"function_expression",
|
|
"arrow_function",
|
|
"method_definition",
|
|
"function_signature",
|
|
NULL};
|
|
static const char *ts_class_types[] = {"class_declaration",
|
|
"class",
|
|
"abstract_class_declaration",
|
|
"enum_declaration",
|
|
"interface_declaration",
|
|
"type_alias_declaration",
|
|
"internal_module",
|
|
NULL};
|
|
static const char *ts_decorator_types[] = {"decorator", NULL};
|
|
|
|
// ==================== ARKTS (HarmonyOS .ets) ====================
|
|
// TypeScript-superset grammar (first-party tree-sitter-typescript fork).
|
|
// Reuses the JS/TS arrays and adds the ArkUI constructs: `@Component struct`
|
|
// components are class-like containers (struct_declaration), and their
|
|
// decorated state members (public_field_definition) are extracted as fields
|
|
// so @State/@Prop/@Link/... properties are findable.
|
|
static const char *arkts_class_types[] = {"class_declaration",
|
|
"class",
|
|
"abstract_class_declaration",
|
|
"struct_declaration",
|
|
"enum_declaration",
|
|
"interface_declaration",
|
|
"type_alias_declaration",
|
|
"internal_module",
|
|
NULL};
|
|
static const char *arkts_field_types[] = {"public_field_definition", NULL};
|
|
|
|
// ==================== QML (Qt) ====================
|
|
// QMLJS grammar is a TypeScript superset plus declarative ui_* nodes, so the
|
|
// JS/TS function, call, branch, variable and module arrays are reused as-is.
|
|
static const char *qml_class_types[] = {"class_declaration",
|
|
"class",
|
|
"abstract_class_declaration",
|
|
"enum_declaration",
|
|
"interface_declaration",
|
|
"ui_inline_component",
|
|
NULL};
|
|
static const char *qml_field_types[] = {"ui_property", "ui_signal", "public_field_definition",
|
|
NULL};
|
|
static const char *qml_import_types[] = {"import_statement", "import", "ui_import", NULL};
|
|
|
|
// ==================== CFScript (CFML .cfc script dialect) ====================
|
|
// JS-like grammar: components contain function/method declarations. Reuses the
|
|
// JS call/branch/var/module arrays.
|
|
static const char *cfscript_func_types[] = {"function_declaration", "function_expression",
|
|
"arrow_function", "method_definition", NULL};
|
|
static const char *cfscript_field_types[] = {"property_declaration", NULL};
|
|
static const char *cfscript_import_types[] = {"import_statement", "import", NULL};
|
|
|
|
// ==================== CFML (tag dialect — .cfm templates) ====================
|
|
// Tag-based grammar (HTML-derived). Embedded <cfscript> functions appear as
|
|
// function_declaration/function_expression. Tag <cffunction> nodes
|
|
// (cf_function_tag) carry their name in a cf_attribute rather than a `name`
|
|
// field, so the definition walker mints them via extract_cfml_function_tag and
|
|
// compute_func_qn names them via compute_cfml_func_qn — but cf_function_tag is
|
|
// listed here too so push_boundary_scopes pushes a SCOPE_FUNC and in-body calls
|
|
// source to the enclosing cffunction rather than the Module.
|
|
static const char *cfml_func_types[] = {"cf_function_tag", "function_declaration",
|
|
"function_expression", NULL};
|
|
static const char *cfml_call_types[] = {"call_expression", NULL};
|
|
static const char *cfml_branch_types[] = {
|
|
"cf_if_tag", "cf_elseif_tag", "cf_else_tag", "if_statement",
|
|
"for_statement", "while_statement", "switch_statement", NULL};
|
|
static const char *cfml_module_types[] = {"program", "component_file", NULL};
|
|
|
|
// ==================== RUST ====================
|
|
static const char *rust_func_types[] = {"function_item", "function_signature_item",
|
|
"closure_expression", NULL};
|
|
static const char *rust_class_types[] = {"struct_item", "enum_item", "union_item", "trait_item",
|
|
"type_item", "impl_item", NULL};
|
|
static const char *rust_field_types[] = {"field_declaration", NULL};
|
|
static const char *rust_module_types[] = {"source_file", "mod_item", NULL};
|
|
static const char *rust_call_types[] = {"call_expression", "macro_invocation", NULL};
|
|
static const char *rust_import_types[] = {"use_declaration", "extern_crate_declaration", NULL};
|
|
static const char *rust_import_from_types[] = {"use_declaration", NULL};
|
|
static const char *rust_branch_types[] = {"if_expression",
|
|
"for_expression",
|
|
"while_expression",
|
|
"loop_expression",
|
|
"match_expression",
|
|
"match_arm",
|
|
NULL};
|
|
static const char *rust_var_types[] = {"static_item", "const_item", NULL};
|
|
static const char *rust_assign_types[] = {"assignment_expression", "compound_assignment_expr",
|
|
NULL};
|
|
static const char *rust_decorator_types[] = {"attribute_item", NULL};
|
|
|
|
// ==================== JAVA ====================
|
|
static const char *java_func_types[] = {"method_declaration", "constructor_declaration",
|
|
"lambda_expression", NULL};
|
|
static const char *java_class_types[] = {"class_declaration", "interface_declaration",
|
|
"enum_declaration", "annotation_type_declaration",
|
|
"record_declaration", "module_declaration",
|
|
"package_declaration", NULL};
|
|
static const char *java_field_types[] = {"field_declaration", NULL};
|
|
static const char *java_module_types[] = {"program", NULL};
|
|
static const char *java_call_types[] = {"method_invocation", "object_creation_expression", NULL};
|
|
static const char *java_import_types[] = {"import_declaration", "extends", "import", NULL};
|
|
static const char *java_branch_types[] = {
|
|
"if_statement", "for_statement", "enhanced_for_statement",
|
|
"while_statement", "switch_expression", "switch_block_statement_group",
|
|
"try_statement", "catch_clause", NULL};
|
|
static const char *java_var_types[] = {"field_declaration", "local_variable_declaration", NULL};
|
|
static const char *java_assign_types[] = {"assignment_expression", NULL};
|
|
static const char *java_throw_types[] = {"throw_statement", NULL};
|
|
static const char *java_decorator_types[] = {"marker_annotation", "annotation", NULL};
|
|
|
|
// ==================== C++ ====================
|
|
static const char *cpp_func_types[] = {"function_definition", "declaration",
|
|
"field_declaration", "template_declaration",
|
|
"lambda_expression", NULL};
|
|
static const char *cpp_class_types[] = {"class_specifier", "struct_specifier", "union_specifier",
|
|
"enum_specifier", "type_definition", NULL};
|
|
static const char *cpp_field_types[] = {"field_declaration", NULL};
|
|
static const char *cpp_module_types[] = {"translation_unit", "namespace_definition",
|
|
"linkage_specification", "declaration", NULL};
|
|
static const char *cpp_call_types[] = {"call_expression", "new_expression", NULL};
|
|
static const char *cpp_import_types[] = {"preproc_include", NULL};
|
|
static const char *cpp_branch_types[] = {"if_statement", "for_statement", "for_range_loop",
|
|
"while_statement", "switch_statement", "case_statement",
|
|
"try_statement", "catch_clause", NULL};
|
|
static const char *cpp_var_types[] = {"declaration", NULL};
|
|
static const char *cpp_assign_types[] = {"assignment_expression", NULL};
|
|
static const char *cpp_throw_types[] = {"throw_statement", NULL};
|
|
|
|
// ==================== C# ====================
|
|
static const char *cs_func_types[] = {"destructor_declaration", "local_function_statement",
|
|
"function_pointer_type", "constructor_declaration",
|
|
"anonymous_method_expression", "lambda_expression",
|
|
"method_declaration", NULL};
|
|
static const char *cs_class_types[] = {"class_declaration",
|
|
"struct_declaration",
|
|
"enum_declaration",
|
|
"interface_declaration",
|
|
"record_declaration",
|
|
"type_declaration",
|
|
NULL};
|
|
static const char *cs_module_types[] = {"compilation_unit", NULL};
|
|
static const char *cs_call_types[] = {"invocation_expression", "object_creation_expression", NULL};
|
|
static const char *cs_import_types[] = {"using_directive", "namespace_use_declaration",
|
|
"using_statement", "namespace_declaration", NULL};
|
|
static const char *cs_branch_types[] = {"if_statement", "for_statement", "foreach_statement",
|
|
"while_statement", "switch_statement", "case_switch_label",
|
|
"try_statement", "catch_clause", NULL};
|
|
static const char *cs_var_types[] = {"field_declaration", "local_declaration_statement", NULL};
|
|
static const char *cs_field_types[] = {"field_declaration", "property_declaration", NULL};
|
|
/* tree-sitter-c-sharp models `x++`/`++x` as postfix_/prefix_unary_expression
|
|
* (there is no `update_expression` node — that is a JS/TS kind), so a static
|
|
* field bump like `_count++` must list those node kinds to emit a WRITES. */
|
|
static const char *cs_assign_types[] = {"assignment_expression", "postfix_unary_expression",
|
|
"prefix_unary_expression", NULL};
|
|
static const char *cs_throw_types[] = {"throw_statement", "throw_expression", NULL};
|
|
static const char *cs_decorator_types[] = {"attribute", NULL};
|
|
|
|
// ==================== PHP ====================
|
|
static const char *php_func_types[] = {"function_static_declaration", "anonymous_function",
|
|
"function_definition", "arrow_function",
|
|
"method_declaration", NULL};
|
|
static const char *php_class_types[] = {"trait_declaration", "enum_declaration",
|
|
"interface_declaration", "class_declaration", NULL};
|
|
static const char *php_import_types[] = {"extends", "include", "namespace_use_declaration",
|
|
"require", "use_declaration", NULL};
|
|
static const char *php_module_types[] = {"program", NULL};
|
|
static const char *php_call_types[] = {
|
|
"member_call_expression", "scoped_call_expression", "function_call_expression",
|
|
"object_creation_expression", "nullsafe_member_call_expression", NULL};
|
|
static const char *php_branch_types[] = {"if_statement", "for_statement", "foreach_statement",
|
|
"while_statement", "switch_statement", "case_statement",
|
|
"try_statement", "catch_clause", NULL};
|
|
static const char *php_var_types[] = {"expression_statement", NULL};
|
|
static const char *php_assign_types[] = {"assignment_expression", NULL};
|
|
static const char *php_throw_types[] = {"throw_expression", NULL};
|
|
static const char *php_decorator_types[] = {"attribute_group", NULL};
|
|
|
|
// ==================== LUA ====================
|
|
static const char *lua_func_types[] = {"function_declaration", "function_definition", NULL};
|
|
static const char *lua_module_types[] = {"chunk", NULL};
|
|
static const char *lua_call_types[] = {"function_call", NULL};
|
|
static const char *lua_import_types[] = {"function_call", NULL};
|
|
static const char *lua_branch_types[] = {"if_statement", "for_statement", "for_in_statement",
|
|
"while_statement", "repeat_statement", NULL};
|
|
static const char *lua_var_types[] = {"variable_declaration", NULL};
|
|
static const char *lua_assign_types[] = {"assignment_statement", NULL};
|
|
|
|
// ==================== SCALA ====================
|
|
static const char *scala_func_types[] = {"function_definition", "function_declaration",
|
|
"lambda_expression", NULL};
|
|
static const char *scala_class_types[] = {"class_definition", "object_definition",
|
|
"trait_definition", "enum_definition",
|
|
"type_definition", NULL};
|
|
static const char *scala_module_types[] = {"compilation_unit", NULL};
|
|
static const char *scala_call_types[] = {"call_expression", "infix_expression",
|
|
"instance_expression", NULL};
|
|
static const char *scala_import_types[] = {"import_declaration", "extends", "import",
|
|
"using_directive", NULL};
|
|
static const char *scala_branch_types[] = {
|
|
"if_expression", "for_expression", "while_expression", "match_expression",
|
|
"case_clause", "try_expression", "catch_clause", NULL};
|
|
static const char *scala_var_types[] = {"val_definition", "var_definition", "val_declaration",
|
|
"var_declaration", NULL};
|
|
static const char *scala_assign_types[] = {"assignment_expression", NULL};
|
|
static const char *scala_throw_types[] = {"throw_expression", NULL};
|
|
static const char *scala_decorator_types[] = {"annotation", NULL};
|
|
|
|
// ==================== KOTLIN ====================
|
|
static const char *kotlin_func_types[] = {"function_declaration", "secondary_constructor",
|
|
"anonymous_function", NULL};
|
|
static const char *kotlin_class_types[] = {"class_declaration", "object_declaration",
|
|
"companion_object", "type_alias", NULL};
|
|
static const char *kotlin_module_types[] = {"source_file", NULL};
|
|
static const char *kotlin_call_types[] = {"call_expression", NULL};
|
|
static const char *kotlin_import_types[] = {"import", NULL};
|
|
static const char *kotlin_branch_types[] = {
|
|
"if_expression", "for_statement", "while_statement", "when_expression",
|
|
"when_entry", "try_expression", "catch_block", NULL};
|
|
static const char *kotlin_var_types[] = {"property_declaration", NULL};
|
|
static const char *kotlin_assign_types[] = {"assignment", "directly_assignable_expression", NULL};
|
|
static const char *kotlin_throw_types[] = {"throw_expression", NULL};
|
|
static const char *kotlin_decorator_types[] = {"annotation", NULL};
|
|
|
|
// ==================== RUBY ====================
|
|
static const char *ruby_func_types[] = {"method", "singleton_method", NULL};
|
|
static const char *ruby_class_types[] = {"class", "module", NULL};
|
|
static const char *ruby_module_types[] = {"program", NULL};
|
|
static const char *ruby_call_types[] = {"call", NULL};
|
|
static const char *ruby_import_types[] = {"call", NULL};
|
|
static const char *ruby_branch_types[] = {"if", "unless", "while", "until", "for",
|
|
"case", "when", "rescue", "elsif", NULL};
|
|
static const char *ruby_var_types[] = {"assignment", NULL};
|
|
static const char *ruby_assign_types[] = {"assignment", "operator_assignment", NULL};
|
|
|
|
// ==================== C ====================
|
|
static const char *c_func_types[] = {"function_definition", NULL};
|
|
static const char *c_class_types[] = {"struct_specifier", "enum_specifier", "union_specifier",
|
|
"type_definition", NULL};
|
|
static const char *c_field_types[] = {"field_declaration", NULL};
|
|
static const char *c_module_types[] = {"translation_unit", NULL};
|
|
static const char *c_call_types[] = {"call_expression", NULL};
|
|
static const char *c_import_types[] = {"preproc_include", NULL};
|
|
static const char *c_branch_types[] = {"if_statement",
|
|
"for_statement",
|
|
"while_statement",
|
|
"do_statement",
|
|
"switch_statement",
|
|
"case_statement",
|
|
NULL};
|
|
static const char *c_var_types[] = {"declaration", NULL};
|
|
static const char *c_assign_types[] = {"assignment_expression", NULL};
|
|
|
|
// ==================== BASH ====================
|
|
static const char *bash_func_types[] = {"function_definition", NULL};
|
|
static const char *bash_module_types[] = {"program", NULL};
|
|
static const char *bash_call_types[] = {"command", NULL};
|
|
static const char *bash_import_types[] = {"command", NULL};
|
|
static const char *bash_branch_types[] = {"if_statement", "while_statement", "for_statement",
|
|
"case_statement", "elif_clause", NULL};
|
|
static const char *bash_var_types[] = {"variable_assignment", NULL};
|
|
|
|
// ==================== ZIG ====================
|
|
static const char *zig_func_types[] = {"function_declaration", "test_declaration",
|
|
"function_signature", NULL};
|
|
static const char *zig_class_types[] = {"struct_declaration", "enum_declaration",
|
|
"union_declaration", NULL};
|
|
static const char *zig_field_types[] = {"container_field", NULL};
|
|
static const char *zig_module_types[] = {"source_file", NULL};
|
|
static const char *zig_call_types[] = {"call_expression", "builtin_function", NULL};
|
|
static const char *zig_import_types[] = {"builtin_function", NULL};
|
|
static const char *zig_branch_types[] = {"if_statement", "for_statement", "while_statement",
|
|
"switch_expression", NULL};
|
|
static const char *zig_var_types[] = {"variable_declaration", NULL};
|
|
static const char *zig_assign_types[] = {"assignment_expression", NULL};
|
|
|
|
// ==================== ELIXIR ====================
|
|
static const char *elixir_func_types[] = {"call", "anonymous_function", NULL};
|
|
static const char *elixir_module_types[] = {"source", NULL};
|
|
static const char *elixir_call_types[] = {"call", "binary_operator", NULL};
|
|
static const char *elixir_import_types[] = {"call", NULL};
|
|
static const char *elixir_branch_types[] = {"call", NULL};
|
|
static const char *elixir_var_types[] = {"binary_operator", NULL};
|
|
|
|
// ==================== HASKELL ====================
|
|
/* "bind" = a nullary value binding (`foo = 1`); has a `name` field like `function`.
|
|
* `signature` (type annotations) is suppressed in cbm_resolve_func_name so it never doubles. */
|
|
static const char *haskell_func_types[] = {"function", "signature", "bind", NULL};
|
|
static const char *haskell_class_types[] = {"class", "data_type", "newtype", NULL};
|
|
static const char *haskell_module_types[] = {"haskell", NULL};
|
|
static const char *haskell_call_types[] = {"infix", "apply", NULL};
|
|
static const char *haskell_import_types[] = {"import", "instance", NULL};
|
|
static const char *haskell_branch_types[] = {"match", "guards", "if", "case",
|
|
"do", "boolean", NULL};
|
|
static const char *haskell_var_types[] = {"function", NULL};
|
|
|
|
// ==================== OCAML ====================
|
|
static const char *ocaml_func_types[] = {"value_definition", "constructor_declaration",
|
|
"method_definition", NULL};
|
|
static const char *ocaml_class_types[] = {"type_definition", "class_definition",
|
|
"module_definition", "exception_definition",
|
|
"record_declaration", NULL};
|
|
static const char *ocaml_module_types[] = {"compilation_unit", NULL};
|
|
static const char *ocaml_call_types[] = {"application_expression", "infix_expression",
|
|
"method_invocation", "module_application",
|
|
"new_expression", NULL};
|
|
static const char *ocaml_import_types[] = {"open_module", "include", NULL};
|
|
static const char *ocaml_branch_types[] = {"match_expression", "if_expression", "match_case", NULL};
|
|
static const char *ocaml_var_types[] = {"value_definition", NULL};
|
|
|
|
// ==================== OBJECTIVE-C ====================
|
|
static const char *objc_func_types[] = {"function_definition", "method_definition",
|
|
"method_declaration", NULL};
|
|
static const char *objc_class_types[] = {"class_interface", "class_implementation",
|
|
"protocol_declaration", "class_declaration",
|
|
"enum_specifier", "struct_declaration",
|
|
"struct_specifier", "type_definition",
|
|
"union_specifier", NULL};
|
|
static const char *objc_field_types[] = {"property_declaration", NULL};
|
|
static const char *objc_module_types[] = {"translation_unit", NULL};
|
|
static const char *objc_call_types[] = {"call_expression", "message_expression", NULL};
|
|
static const char *objc_import_types[] = {"preproc_import", "preproc_include", NULL};
|
|
static const char *objc_branch_types[] = {"if_statement", "for_statement", "while_statement",
|
|
"switch_statement", NULL};
|
|
static const char *objc_var_types[] = {"declaration", NULL};
|
|
static const char *objc_assign_types[] = {"assignment_expression", NULL};
|
|
|
|
// ==================== SWIFT ====================
|
|
// protocol_function_declaration: a protocol's method requirements. Needed here as
|
|
// well as in the name resolvers — extract_class_methods gates on this set, so
|
|
// without the entry the requirement is walked and then discarded.
|
|
static const char *swift_func_types[] = {"function_declaration", "protocol_function_declaration",
|
|
"macro_declaration", NULL};
|
|
// KNOWN GAP: struct_declaration and enum_declaration are not node types in the
|
|
// vendored tree-sitter-swift grammar — it models both as class_declaration — so
|
|
// these two entries never match anything, and a bare Swift `enum` is labeled
|
|
// Class rather than Enum. Left in place deliberately: they are the only marker
|
|
// of that modelling gap, and deleting them would hide it. Tracked separately.
|
|
static const char *swift_class_types[] = {"class_declaration", "protocol_declaration",
|
|
"struct_declaration", "enum_declaration", NULL};
|
|
static const char *swift_field_types[] = {"property_declaration", NULL};
|
|
static const char *swift_module_types[] = {"source_file", NULL};
|
|
static const char *swift_call_types[] = {"call_expression", "constructor_expression",
|
|
"macro_invocation", NULL};
|
|
static const char *swift_import_types[] = {"import_declaration", "import", NULL};
|
|
static const char *swift_branch_types[] = {"if_statement", "guard_statement", "for_statement",
|
|
"while_statement", "switch_statement", NULL};
|
|
static const char *swift_var_types[] = {"property_declaration", NULL};
|
|
static const char *swift_assign_types[] = {"assignment", NULL};
|
|
static const char *swift_throw_types[] = {"throw_statement", NULL};
|
|
static const char *swift_decorator_types[] = {"attribute", NULL};
|
|
|
|
// ==================== DART ====================
|
|
static const char *dart_func_types[] = {"function_signature", "method_signature",
|
|
"lambda_expression", NULL};
|
|
static const char *dart_class_types[] = {"class_definition", "enum_declaration",
|
|
"mixin_declaration", "extension_declaration",
|
|
"type_alias", NULL};
|
|
static const char *dart_field_types[] = {"declaration", NULL};
|
|
static const char *dart_module_types[] = {"program", NULL};
|
|
static const char *dart_call_types[] = {"selector", "new_expression", NULL};
|
|
static const char *dart_import_types[] = {"import_or_export", "extends", "import", NULL};
|
|
static const char *dart_branch_types[] = {"if_statement", "for_statement", "while_statement",
|
|
"switch_statement", NULL};
|
|
static const char *dart_var_types[] = {"declaration", NULL};
|
|
static const char *dart_assign_types[] = {"assignment_expression", NULL};
|
|
static const char *dart_throw_types[] = {"throw_expression", NULL};
|
|
static const char *dart_decorator_types[] = {"annotation", NULL};
|
|
|
|
// ==================== PERL ====================
|
|
static const char *perl_func_types[] = {"subroutine_declaration_statement", NULL};
|
|
static const char *perl_module_types[] = {"source_file", NULL};
|
|
static const char *perl_call_types[] = {"ambiguous_function_call_expression",
|
|
"function_call_expression", "func1op_call_expression",
|
|
"method_call_expression", NULL};
|
|
static const char *perl_import_types[] = {"use_statement", "require_statement", "require", NULL};
|
|
static const char *perl_branch_types[] = {"if_statement", "unless_statement", "for_statement",
|
|
"foreach_statement", "while_statement", NULL};
|
|
static const char *perl_var_types[] = {"variable_declaration", "expression_statement", NULL};
|
|
static const char *perl_assign_types[] = {"assignment_expression", NULL};
|
|
|
|
// ==================== GROOVY ====================
|
|
static const char *groovy_func_types[] = {"function_definition", "function_declaration", NULL};
|
|
static const char *groovy_class_types[] = {"class_definition", NULL};
|
|
static const char *groovy_module_types[] = {"source_file", NULL};
|
|
static const char *groovy_call_types[] = {"function_call", "juxt_function_call", NULL};
|
|
static const char *groovy_import_types[] = {"groovy_import", "extends", "import", NULL};
|
|
static const char *groovy_branch_types[] = {"if_statement", "for_statement", "while_statement",
|
|
"switch_statement", NULL};
|
|
static const char *groovy_var_types[] = {"declaration", NULL};
|
|
static const char *groovy_assign_types[] = {"assignment", NULL};
|
|
static const char *groovy_throw_types[] = {"throw_statement", NULL};
|
|
static const char *groovy_decorator_types[] = {"annotation", NULL};
|
|
|
|
// ==================== ERLANG ====================
|
|
static const char *erlang_func_types[] = {"function_clause", NULL};
|
|
static const char *erlang_class_types[] = {"type_alias", NULL};
|
|
static const char *erlang_module_types[] = {"source_file", NULL};
|
|
static const char *erlang_call_types[] = {"call", NULL};
|
|
static const char *erlang_import_types[] = {"module_attribute", "import", "include", NULL};
|
|
static const char *erlang_branch_types[] = {"if_expression", "case_expression",
|
|
"receive_expression", NULL};
|
|
static const char *erlang_var_types[] = {"pp_define", "record_decl", NULL};
|
|
static const char *erlang_assign_types[] = {"match_expression", NULL};
|
|
static const char *erlang_throw_types[] = {"call", NULL};
|
|
|
|
// ==================== R ====================
|
|
static const char *r_func_types[] = {"function_definition", NULL};
|
|
static const char *r_module_types[] = {"program", NULL};
|
|
static const char *r_call_types[] = {"call", NULL};
|
|
static const char *r_import_types[] = {"call", NULL};
|
|
static const char *r_branch_types[] = {"if_statement", "for_statement", "while_statement", NULL};
|
|
static const char *r_var_types[] = {"binary_operator", NULL};
|
|
|
|
// ==================== HTML ====================
|
|
static const char *html_module_types[] = {"document", NULL};
|
|
|
|
// ==================== CSS ====================
|
|
static const char *css_call_types[] = {"call_expression", NULL};
|
|
static const char *css_module_types[] = {"stylesheet", NULL};
|
|
static const char *css_import_types[] = {"import_statement", NULL};
|
|
|
|
// ==================== SCSS ====================
|
|
static const char *scss_func_types[] = {"mixin_statement", "function_statement", NULL};
|
|
static const char *scss_module_types[] = {"stylesheet", NULL};
|
|
static const char *scss_call_types[] = {"call_expression", "include_statement", NULL};
|
|
static const char *scss_import_types[] = {"import_statement", "use_statement", "include_statement",
|
|
NULL};
|
|
static const char *scss_branch_types[] = {"if_statement", NULL};
|
|
static const char *scss_var_types[] = {"declaration", NULL};
|
|
|
|
// ==================== YAML ====================
|
|
static const char *yaml_module_types[] = {"stream", NULL};
|
|
static const char *yaml_var_types[] = {"block_mapping_pair", NULL};
|
|
|
|
// ==================== TOML ====================
|
|
static const char *toml_module_types[] = {"document", NULL};
|
|
static const char *toml_class_types[] = {"table", "table_array_element", NULL};
|
|
static const char *toml_var_types[] = {"pair", NULL};
|
|
|
|
// ==================== HCL ====================
|
|
static const char *hcl_class_types[] = {"block", NULL};
|
|
static const char *hcl_module_types[] = {"config_file", NULL};
|
|
static const char *hcl_call_types[] = {"function_call", NULL};
|
|
static const char *hcl_var_types[] = {"attribute", NULL};
|
|
|
|
// ==================== SQL ====================
|
|
static const char *sql_func_types[] = {"create_function", "function_declaration",
|
|
"create_procedure", NULL};
|
|
static const char *sql_field_types[] = {"column_definition", NULL};
|
|
// create_table/create_view route through the class-def path where
|
|
// extract_sql_ddl_class_def turns them into first-class Table/View nodes
|
|
// (previously they were generic Variable nodes via sql_var_types).
|
|
static const char *sql_class_types[] = {"custom_type", "create_table", "create_view",
|
|
"create_materialized_view", NULL};
|
|
static const char *sql_module_types[] = {"program", NULL};
|
|
static const char *sql_call_types[] = {"invocation", NULL};
|
|
static const char *sql_branch_types[] = {"if_statement", "case_expression", NULL};
|
|
|
|
// ==================== DOCKERFILE ====================
|
|
static const char *dockerfile_module_types[] = {"source_file", NULL};
|
|
static const char *dockerfile_var_types[] = {"env_instruction", "arg_instruction", NULL};
|
|
|
|
// ==================== ENV ACCESS ====================
|
|
static const char *go_env_funcs[] = {"os.Getenv", "os.LookupEnv", NULL};
|
|
static const char *py_env_funcs[] = {"os.getenv", "os.environ.get", NULL};
|
|
static const char *py_env_members[] = {"os.environ", NULL};
|
|
static const char *js_env_members[] = {"process.env", NULL};
|
|
static const char *ts_env_members[] = {"process.env", NULL};
|
|
static const char *rust_env_funcs[] = {"env::var", "std::env::var", NULL};
|
|
static const char *java_env_funcs[] = {"System.getenv", "System.getProperty", NULL};
|
|
static const char *cpp_env_funcs[] = {"getenv", "std::getenv", NULL};
|
|
static const char *cs_env_funcs[] = {"Environment.GetEnvironmentVariable", NULL};
|
|
static const char *php_env_funcs[] = {"getenv", "env", NULL};
|
|
static const char *lua_env_funcs[] = {"os.getenv", NULL};
|
|
static const char *scala_env_funcs[] = {"sys.env", "System.getenv", "System.getProperty", NULL};
|
|
static const char *kotlin_env_funcs[] = {"System.getenv", "System.getProperty", NULL};
|
|
static const char *ruby_env_members[] = {"ENV", NULL};
|
|
static const char *c_env_funcs[] = {"getenv", NULL};
|
|
static const char *zig_env_funcs[] = {"std.os.getenv", NULL};
|
|
static const char *elixir_env_funcs[] = {"System.get_env", NULL};
|
|
static const char *haskell_env_funcs[] = {"lookupEnv", "getEnv", NULL};
|
|
static const char *ocaml_env_funcs[] = {"Sys.getenv", NULL};
|
|
static const char *r_env_funcs[] = {"Sys.getenv", NULL};
|
|
static const char *perl_env_funcs[] = {"$ENV", NULL};
|
|
|
|
// ==================== CLOJURE ====================
|
|
/* Clojure def-forms (defn/def/...) are `list_lit` nodes; gating the actual
|
|
* def-vs-call distinction happens in cbm_resolve_func_name (returns NULL for a
|
|
* non-def list_lit such as a call), so non-def lists never push a SCOPE_FUNC. */
|
|
static const char *clojure_func_types[] = {"list_lit", NULL};
|
|
static const char *clojure_module_types[] = {"source", NULL};
|
|
static const char *clojure_call_types[] = {"list_lit", NULL};
|
|
|
|
// ==================== F# ====================
|
|
/* Top-level `let f () = ...` parses to function_or_value_defn (module-level
|
|
* value_declaration is aliased to declaration_expression, which wraps it). The
|
|
* name lives on a function_declaration_left/value_declaration_left child — see
|
|
* the CBM_LANG_FSHARP branch in cbm_resolve_func_name. */
|
|
static const char *fsharp_func_types[] = {"function_declaration", "value_declaration",
|
|
"function_or_value_defn", NULL};
|
|
static const char *fsharp_class_types[] = {"type_definition", "exception_definition", NULL};
|
|
static const char *fsharp_module_types[] = {"file", NULL};
|
|
static const char *fsharp_call_types[] = {"application_expression", NULL};
|
|
static const char *fsharp_import_types[] = {"import_decl", "open_expression", "instance", NULL};
|
|
static const char *fsharp_branch_types[] = {"if_expression", "for_expression",
|
|
"while_expression", "match_expression",
|
|
"elif_expression", NULL};
|
|
static const char *fsharp_var_types[] = {"value_declaration", NULL};
|
|
|
|
// ==================== JULIA ====================
|
|
/* `assignment` covers Julia short-form `f(x) = body` (the grammar parses it as an
|
|
* assignment with a call_expression LHS, not a short_function_definition). The
|
|
* resolver names it only when the LHS is a call, so plain `x = 5` is not a def. */
|
|
static const char *julia_func_types[] = {"function_definition", "short_function_definition",
|
|
"assignment", NULL};
|
|
static const char *julia_class_types[] = {"struct_definition", "abstract_definition",
|
|
"primitive_definition", NULL};
|
|
static const char *julia_module_types[] = {"source_file", NULL};
|
|
static const char *julia_call_types[] = {"call_expression", "broadcast_call_expression", NULL};
|
|
static const char *julia_import_types[] = {"import_statement", "using_statement",
|
|
"export_statement", "import", NULL};
|
|
static const char *julia_branch_types[] = {"if_statement", "for_statement", "while_statement",
|
|
"try_statement", NULL};
|
|
static const char *julia_var_types[] = {"const_statement", "assignment", NULL};
|
|
static const char *julia_assign_types[] = {"assignment", "compound_assignment_expression", NULL};
|
|
static const char *julia_throw_types[] = {"throw_statement", NULL};
|
|
|
|
// ==================== VIM SCRIPT ====================
|
|
static const char *vim_func_types[] = {"function_definition", "function_declaration",
|
|
"lambda_expression", NULL};
|
|
static const char *vim_import_types[] = {"include", NULL};
|
|
static const char *vim_module_types[] = {"script_file", NULL};
|
|
static const char *vim_call_types[] = {"call_expression", "call", "command", NULL};
|
|
static const char *vim_branch_types[] = {"if_statement", "for_statement", "while_statement",
|
|
"try_statement", NULL};
|
|
static const char *vim_var_types[] = {"let_statement", NULL};
|
|
|
|
// ==================== NIX ====================
|
|
static const char *nix_func_types[] = {"function_expression", NULL};
|
|
static const char *nix_module_types[] = {"source_expression", NULL};
|
|
static const char *nix_call_types[] = {"apply_expression", NULL};
|
|
static const char *nix_branch_types[] = {"if_expression", NULL};
|
|
static const char *nix_var_types[] = {"binding", NULL};
|
|
|
|
// ==================== COMMON LISP ====================
|
|
static const char *commonlisp_func_types[] = {"defun", NULL};
|
|
static const char *commonlisp_import_types[] = {"with_clause", NULL};
|
|
static const char *commonlisp_module_types[] = {"source", NULL};
|
|
static const char *commonlisp_call_types[] = {"list_lit", NULL};
|
|
|
|
// ==================== ELM ====================
|
|
static const char *elm_func_types[] = {"value_declaration", "function_declaration", NULL};
|
|
static const char *elm_class_types[] = {"type_declaration", "type_alias_declaration",
|
|
"module_declaration", NULL};
|
|
static const char *elm_module_types[] = {"file", NULL};
|
|
static const char *elm_call_types[] = {"function_call_expr", NULL};
|
|
static const char *elm_import_types[] = {"import", NULL};
|
|
static const char *elm_branch_types[] = {"case_of_expr", "if_else_expr", NULL};
|
|
|
|
// ==================== FORTRAN ====================
|
|
/* subroutine/function wrap an inner *_statement that carries the `name` field;
|
|
* function_statement was already present, subroutine_statement was missing. */
|
|
static const char *fortran_func_types[] = {"function", "subroutine", "function_statement",
|
|
"subroutine_statement", NULL};
|
|
static const char *fortran_class_types[] = {"derived_type_definition", "enum_statement", NULL};
|
|
static const char *fortran_module_types[] = {"translation_unit", NULL};
|
|
static const char *fortran_call_types[] = {"call_expression", "subroutine_call", NULL};
|
|
static const char *fortran_import_types[] = {"use_statement", "include_statement", "extends",
|
|
"import", "import_statement", "include",
|
|
"open_statement", "preproc_include", NULL};
|
|
static const char *fortran_branch_types[] = {"if_statement", "do_loop_statement", "where_statement",
|
|
"select_case_statement", NULL};
|
|
static const char *fortran_var_types[] = {"variable_declaration", NULL};
|
|
static const char *fortran_assign_types[] = {"assignment_statement", NULL};
|
|
|
|
// ==================== CUDA ====================
|
|
// CUDA extends C++, reuse cpp types (same grammar family)
|
|
|
|
// ==================== COBOL ====================
|
|
static const char *cobol_func_types[] = {"program_definition", NULL};
|
|
static const char *cobol_import_types[] = {"open_statement", "use_statement", "with_clause", NULL};
|
|
static const char *cobol_module_types[] = {"source_file", NULL};
|
|
static const char *cobol_call_types[] = {"call_statement", NULL};
|
|
static const char *cobol_branch_types[] = {"if_statement", "evaluate_statement",
|
|
"perform_statement", NULL};
|
|
static const char *cobol_var_types[] = {"data_description_entry", NULL};
|
|
|
|
// ==================== VERILOG ====================
|
|
static const char *verilog_func_types[] = {"function_declaration", "task_declaration",
|
|
"function_body_declaration", "function_statement", NULL};
|
|
static const char *verilog_class_types[] = {"module_declaration", "class_declaration",
|
|
"interface_declaration", "package_declaration",
|
|
"type_declaration", NULL};
|
|
static const char *verilog_import_types[] = {"extends", "import", "package_import_declaration",
|
|
NULL};
|
|
static const char *verilog_module_types[] = {"source_file", NULL};
|
|
static const char *verilog_call_types[] = {"system_tf_call", "subroutine_call",
|
|
"function_subroutine_call", "method_call", NULL};
|
|
static const char *verilog_branch_types[] = {"conditional_statement", "case_statement",
|
|
"loop_statement", NULL};
|
|
static const char *verilog_var_types[] = {"net_declaration", "data_declaration", NULL};
|
|
static const char *verilog_assign_types[] = {"blocking_assignment", "nonblocking_assignment", NULL};
|
|
|
|
// ==================== EMACS LISP ====================
|
|
static const char *elisp_func_types[] = {"function_definition", "macro_definition", NULL};
|
|
static const char *elisp_module_types[] = {"source_file", NULL};
|
|
static const char *elisp_call_types[] = {"list", NULL};
|
|
|
|
// ==================== JSON ====================
|
|
static const char *json_module_types[] = {"document", NULL};
|
|
static const char *json_var_types[] = {"pair", NULL};
|
|
|
|
// ==================== XML ====================
|
|
static const char *xml_module_types[] = {"document", NULL};
|
|
static const char *xml_class_types[] = {"element", NULL};
|
|
|
|
// ==================== MARKDOWN ====================
|
|
static const char *markdown_module_types[] = {"document", NULL};
|
|
static const char *markdown_class_types[] = {"atx_heading", "setext_heading", NULL};
|
|
|
|
// ==================== MAKEFILE ====================
|
|
static const char *makefile_func_types[] = {"rule", "recipe", NULL};
|
|
static const char *makefile_module_types[] = {"makefile", NULL};
|
|
static const char *makefile_call_types[] = {"function_call", "call", "shell_function", NULL};
|
|
static const char *makefile_import_types[] = {"include_directive", "include", NULL};
|
|
static const char *makefile_var_types[] = {"variable_assignment", NULL};
|
|
|
|
// ==================== CMAKE ====================
|
|
static const char *cmake_func_types[] = {"function_def", "macro_def", NULL};
|
|
static const char *cmake_module_types[] = {"source_file", NULL};
|
|
static const char *cmake_call_types[] = {"normal_command", NULL};
|
|
|
|
// ==================== PROTOBUF ====================
|
|
static const char *protobuf_class_types[] = {"message", "enum", "service", NULL};
|
|
static const char *protobuf_func_types[] = {"rpc", NULL};
|
|
static const char *protobuf_module_types[] = {"source_file", NULL};
|
|
static const char *protobuf_field_types[] = {"field", "map_field", "oneof_field", NULL};
|
|
static const char *protobuf_import_types[] = {"import", NULL};
|
|
|
|
// ==================== GRAPHQL ====================
|
|
static const char *graphql_class_types[] = {
|
|
"object_type_definition", "input_object_type_definition",
|
|
"enum_type_definition", "interface_type_definition",
|
|
"union_type_definition", "scalar_type_definition",
|
|
"type_definition", NULL};
|
|
static const char *graphql_module_types[] = {"document", NULL};
|
|
static const char *graphql_field_types[] = {"field_definition", "input_value_definition", NULL};
|
|
|
|
// ==================== Embedded sub-languages ====================
|
|
// Host grammars (Svelte/Vue/HTML/Astro) treat <script> bodies as raw_text and
|
|
// do not recurse into them. Declaring the host's script-content node here lets
|
|
// the generic embedded walker re-parse that slice with the declared grammar so
|
|
// its definitions, imports and calls extract in host-file coordinates. The
|
|
// declared language is the default; a <script lang=> attribute overrides it.
|
|
// Terminator: an entry whose script_node_type is NULL.
|
|
static const CBMEmbeddedLangSpec cfml_embedded_imports[] = {
|
|
/* Tag-dialect CFML keeps <cfscript> bodies as opaque cf_script_content;
|
|
* re-parse them with the cfscript grammar through the shared included-
|
|
* ranges machinery so defs (and calls) inside legacy components extract
|
|
* with absolute coordinates. Distilled from #1412. */
|
|
{"cf_script_tag", "cf_script_content", CBM_LANG_CFSCRIPT},
|
|
{NULL, NULL, 0},
|
|
};
|
|
static const CBMEmbeddedLangSpec vue_embedded_imports[] = {
|
|
{"script_element", "raw_text", CBM_LANG_JAVASCRIPT},
|
|
{NULL, NULL, 0},
|
|
};
|
|
static const CBMEmbeddedLangSpec svelte_embedded_imports[] = {
|
|
{"script_element", "raw_text", CBM_LANG_JAVASCRIPT},
|
|
{NULL, NULL, 0},
|
|
};
|
|
static const CBMEmbeddedLangSpec html_embedded_imports[] = {
|
|
{"script_element", "raw_text", CBM_LANG_JAVASCRIPT},
|
|
{NULL, NULL, 0},
|
|
};
|
|
static const CBMEmbeddedLangSpec astro_embedded_imports[] = {
|
|
/* Astro component scripts live in the `---` frontmatter fence, which the
|
|
* grammar keeps as an unparsed frontmatter_js_block. Astro type-checks the
|
|
* fence and its <script> bodies as TypeScript without any lang= attribute
|
|
* saying so (the fence cannot carry one), so TypeScript is the deliberate
|
|
* default for both; it parses untyped JavaScript unchanged. */
|
|
{"frontmatter", "frontmatter_js_block", CBM_LANG_TYPESCRIPT},
|
|
{"script_element", "raw_text", CBM_LANG_TYPESCRIPT},
|
|
{NULL, NULL, 0},
|
|
};
|
|
|
|
// ==================== VUE ====================
|
|
static const char *vue_module_types[] = {"document", NULL};
|
|
|
|
// ==================== SVELTE ====================
|
|
static const char *svelte_module_types[] = {"document", NULL};
|
|
static const char *svelte_branch_types[] = {"if_statement", "each_statement", "await_statement",
|
|
NULL};
|
|
|
|
// ==================== MESON ====================
|
|
static const char *meson_func_types[] = {"function_expression", NULL};
|
|
static const char *meson_module_types[] = {"source_file", NULL};
|
|
static const char *meson_call_types[] = {"normal_command", NULL};
|
|
static const char *meson_branch_types[] = {"if_statement", "foreach_statement", NULL};
|
|
static const char *meson_var_types[] = {"assignment_statement", NULL};
|
|
|
|
// ==================== GLSL ====================
|
|
// GLSL extends C, reuse c types (same grammar family)
|
|
|
|
// ==================== INI ====================
|
|
static const char *ini_module_types[] = {"document", NULL};
|
|
static const char *ini_class_types[] = {"section", NULL};
|
|
static const char *ini_var_types[] = {"setting", NULL};
|
|
|
|
// ==================== MATLAB ====================
|
|
static const char *matlab_func_types[] = {"function_definition", "function_signature", NULL};
|
|
static const char *matlab_class_types[] = {"class_definition", NULL};
|
|
static const char *matlab_module_types[] = {"source_file", NULL};
|
|
static const char *matlab_call_types[] = {"function_call", "command", NULL};
|
|
static const char *matlab_branch_types[] = {"if_statement", "for_statement", "while_statement",
|
|
"switch_statement", "try_statement", NULL};
|
|
static const char *matlab_var_types[] = {"assignment", NULL};
|
|
|
|
// ==================== LEAN ====================
|
|
static const char *lean_func_types[] = {"def", "theorem", "instance", "abbrev", NULL};
|
|
static const char *lean_class_types[] = {"structure", "class_inductive", "inductive", NULL};
|
|
static const char *lean_module_types[] = {"module", NULL};
|
|
static const char *lean_call_types[] = {"apply", NULL};
|
|
static const char *lean_import_types[] = {"import", "extends", "instance", NULL};
|
|
static const char *lean_branch_types[] = {"if", "match", "do", NULL};
|
|
|
|
// ==================== FORM ====================
|
|
static const char *form_func_types[] = {"procedure_definition", NULL};
|
|
static const char *form_module_types[] = {"source_file", NULL};
|
|
static const char *form_call_types[] = {"call_statement", NULL};
|
|
static const char *form_import_types[] = {"include_directive", NULL};
|
|
static const char *form_branch_types[] = {"if_statement", "repeat_statement", "do_loop", NULL};
|
|
static const char *form_var_types[] = {"declaration_statement", NULL};
|
|
static const char *form_assign_types[] = {"substitution_statement", NULL};
|
|
|
|
// ==================== MAGMA ====================
|
|
static const char *magma_func_types[] = {"function_definition", "procedure_definition",
|
|
"intrinsic_definition", "anonymous_function", NULL};
|
|
static const char *magma_module_types[] = {"source_file", NULL};
|
|
static const char *magma_call_types[] = {"call_expression", NULL};
|
|
static const char *magma_import_types[] = {"load_statement", "require", "require_statement", NULL};
|
|
static const char *magma_branch_types[] = {"if_statement", "for_statement", "while_statement",
|
|
"repeat_statement", "case_statement", NULL};
|
|
static const char *magma_var_types[] = {"assignment_statement", NULL};
|
|
|
|
// ==================== WOLFRAM ====================
|
|
static const char *wolfram_func_types[] = {"set_delayed_top", "set_top", "set_delayed", "set",
|
|
NULL};
|
|
static const char *wolfram_module_types[] = {"source_file", NULL};
|
|
static const char *wolfram_call_types[] = {"apply", NULL};
|
|
static const char *wolfram_import_types[] = {"get_top", NULL};
|
|
|
|
// ==================== NEW LANG ENV ACCESS ====================
|
|
static const char *julia_env_funcs[] = {"ENV", NULL};
|
|
static const char *nix_env_funcs[] = {"builtins.getEnv", NULL};
|
|
static const char *fortran_env_funcs[] = {"get_environment_variable", NULL};
|
|
static const char *fsharp_env_funcs[] = {"Environment.GetEnvironmentVariable", NULL};
|
|
|
|
// ==================== D ====================
|
|
static const char *d_func_types[] = {"function_declaration", "constructor", "destructor", NULL};
|
|
static const char *d_class_types[] = {"class_declaration",
|
|
"struct_declaration",
|
|
"interface_declaration",
|
|
"union_declaration",
|
|
"enum_declaration",
|
|
"module_declaration",
|
|
"module_def",
|
|
NULL};
|
|
static const char *d_field_types[] = {"variable_declaration", NULL};
|
|
static const char *d_call_types[] = {"call_expression", "new_expression", NULL};
|
|
static const char *d_import_types[] = {"import_declaration", "import", NULL};
|
|
static const char *d_branch_types[] = {"if_statement", "for_statement", "foreach_statement",
|
|
"while_statement", "do_statement", "switch_statement",
|
|
"try_statement", "catch_statement", NULL};
|
|
static const char *d_var_types[] = {"auto_declaration", "variable_declaration", NULL};
|
|
static const char *d_assign_types[] = {"assignment_expression", NULL};
|
|
static const char *d_throw_types[] = {"throw_expression", NULL};
|
|
|
|
// ==================== LLVM IR ====================
|
|
static const char *llvm_func_types[] = {"function_header", NULL};
|
|
static const char *llvm_call_types[] = {"call", "invoke", "instruction_call", NULL};
|
|
static const char *llvm_branch_types[] = {"br", "switch", NULL};
|
|
static const char *llvm_var_types[] = {"local_var", "global_var", NULL};
|
|
|
|
// ==================== NEW LANGUAGE MODULE TYPES ====================
|
|
static const char *solidity_func_types[] = {"function_definition", "constructor_definition",
|
|
"modifier_definition", "fallback_receive_definition",
|
|
NULL};
|
|
static const char *solidity_class_types[] = {"contract_declaration",
|
|
"interface_declaration",
|
|
"library_declaration",
|
|
"struct_declaration",
|
|
"enum_declaration",
|
|
"type_alias",
|
|
NULL};
|
|
static const char *solidity_field_types[] = {"state_variable_declaration", "struct_member", NULL};
|
|
static const char *solidity_call_types[] = {"call_expression", "call", "new_expression", NULL};
|
|
static const char *solidity_import_types[] = {"import_directive", "import", "using_directive",
|
|
NULL};
|
|
static const char *solidity_branch_types[] = {"if_statement", "for_statement",
|
|
"while_statement", "do_while_statement",
|
|
"try_statement", NULL};
|
|
static const char *solidity_var_types[] = {"variable_declaration_statement",
|
|
"state_variable_declaration", NULL};
|
|
static const char *solidity_assign_types[] = {"assignment_expression",
|
|
"augmented_assignment_expression", NULL};
|
|
static const char *solidity_throw_types[] = {"revert_statement", "emit_statement", NULL};
|
|
static const char *solidity_module_types[] = {"source_file", NULL};
|
|
static const char *typst_func_types[] = {"lambda", "let", NULL};
|
|
static const char *typst_call_types[] = {"call", NULL};
|
|
static const char *typst_import_types[] = {"import", "include", NULL};
|
|
static const char *typst_branch_types[] = {"if", "for", "while", NULL};
|
|
static const char *typst_var_types[] = {"let", NULL};
|
|
static const char *typst_assign_types[] = {"assign", "set", NULL};
|
|
static const char *typst_module_types[] = {"source_file", NULL};
|
|
static const char *gdscript_func_types[] = {"function_definition", "constructor_definition",
|
|
"lambda", NULL};
|
|
static const char *gdscript_class_types[] = {"class_definition", "enum_definition", NULL};
|
|
static const char *gdscript_field_types[] = {"variable_statement", "export_variable_statement",
|
|
"onready_variable_statement", "signal_statement",
|
|
NULL};
|
|
static const char *gdscript_call_types[] = {"call", "attribute_call", "base_call", NULL};
|
|
static const char *gdscript_import_types[] = {"extends_statement", "class_name_statement",
|
|
"extends", NULL};
|
|
static const char *gdscript_branch_types[] = {"if_statement", "for_statement", "while_statement",
|
|
"match_statement", NULL};
|
|
static const char *gdscript_var_types[] = {"variable_statement", "const_statement", NULL};
|
|
static const char *gdscript_assign_types[] = {"assignment", "augmented_assignment", NULL};
|
|
static const char *gdscript_decorator_types[] = {"annotation", NULL};
|
|
static const char *gdscript_module_types[] = {"source_file", NULL};
|
|
static const char *gleam_func_types[] = {"function", "anonymous_function", "external_function",
|
|
NULL};
|
|
static const char *gleam_class_types[] = {"type_definition", "type_alias", "custom_type", NULL};
|
|
static const char *gleam_field_types[] = {"field", NULL};
|
|
static const char *gleam_call_types[] = {"function_call", NULL};
|
|
static const char *gleam_import_types[] = {"import", "unqualified_import", NULL};
|
|
static const char *gleam_branch_types[] = {"case", "case_clause", NULL};
|
|
static const char *gleam_var_types[] = {"let", "constant", NULL};
|
|
static const char *gleam_assign_types[] = {"let_assert", NULL};
|
|
static const char *gleam_module_types[] = {"source_file", NULL};
|
|
static const char *powershell_func_types[] = {"function_statement", NULL};
|
|
static const char *powershell_class_types[] = {"class_statement", "enum_statement", "type_spec",
|
|
NULL};
|
|
static const char *powershell_call_types[] = {"invokation_expression", "command", NULL};
|
|
static const char *powershell_import_types[] = {"using_statement", NULL};
|
|
static const char *powershell_branch_types[] = {
|
|
"if_statement", "for_statement", "foreach_statement",
|
|
"while_statement", "do_statement", "switch_statement",
|
|
"try_statement", "catch_clause", NULL};
|
|
static const char *powershell_var_types[] = {"variable", NULL};
|
|
static const char *powershell_assign_types[] = {"assignment_expression", NULL};
|
|
static const char *powershell_throw_types[] = {"throw", NULL};
|
|
static const char *powershell_module_types[] = {"program", NULL};
|
|
static const char *pascal_func_types[] = {"defProc", "declProc", NULL};
|
|
static const char *pascal_class_types[] = {"declClass", "declIntf", "declHelper",
|
|
"declObject", "declRecord", NULL};
|
|
static const char *pascal_field_types[] = {"declField", "declProp", NULL};
|
|
static const char *pascal_call_types[] = {"exprCall", NULL};
|
|
static const char *pascal_import_types[] = {"declUses", NULL};
|
|
static const char *pascal_branch_types[] = {"if", "ifElse", "while", "repeat", "for",
|
|
"foreach", "try", "case", NULL};
|
|
static const char *pascal_var_types[] = {"declVar", "declConst", NULL};
|
|
static const char *pascal_assign_types[] = {"assignment", NULL};
|
|
static const char *pascal_throw_types[] = {"raise", NULL};
|
|
static const char *pascal_module_types[] = {"source_file", NULL};
|
|
static const char *d_module_types[] = {"source_file", NULL};
|
|
/* Scheme def-forms (`(define (f ..) ..)`) are `list` nodes; the def-vs-call
|
|
* gate is in cbm_resolve_func_name (returns NULL for a non-def list). */
|
|
static const char *scheme_func_types[] = {"list", NULL};
|
|
static const char *scheme_call_types[] = {"list", NULL};
|
|
static const char *scheme_var_types[] = {"symbol", NULL};
|
|
static const char *scheme_module_types[] = {"program", NULL};
|
|
// Chialisp: a deliberately generic s-expression grammar (tools/tree-sitter-chialisp).
|
|
// Every parenthesized form is a `list` and every atom a `symbol`; which lists are
|
|
// definitions is decided in extract_defs.c, not by the parser. Root is `source_file`.
|
|
static const char *chialisp_func_types[] = {"list", NULL};
|
|
static const char *chialisp_call_types[] = {"list", NULL};
|
|
static const char *chialisp_var_types[] = {"symbol", NULL};
|
|
static const char *chialisp_module_types[] = {"source_file", NULL};
|
|
static const char *fennel_func_types[] = {"fn", "lambda", "hashfn", NULL};
|
|
static const char *fennel_call_types[] = {"list", NULL};
|
|
static const char *fennel_branch_types[] = {"each", "for", "match", NULL};
|
|
static const char *fennel_var_types[] = {"symbol", NULL};
|
|
static const char *fennel_assign_types[] = {"set", "var", "local", "global", "let", NULL};
|
|
static const char *fennel_module_types[] = {"program", NULL};
|
|
static const char *fish_func_types[] = {"function_definition", NULL};
|
|
static const char *fish_call_types[] = {"command", NULL};
|
|
static const char *fish_branch_types[] = {"if_statement", "switch_statement", "while_statement",
|
|
"for_statement", NULL};
|
|
static const char *fish_var_types[] = {"variable", NULL};
|
|
static const char *fish_module_types[] = {"program", NULL};
|
|
/* Only `func_def` (a named `function f(){}`) is a callable. A `rule` (`{...}` /
|
|
* `/re/{...}` / BEGIN/END) is ANONYMOUS top-level executable code — it cannot be
|
|
* called by name, so a call inside a rule is legitimately Module-sourced, and a
|
|
* rule must NOT be treated as a function boundary. */
|
|
static const char *awk_func_types[] = {"func_def", NULL};
|
|
static const char *awk_call_types[] = {"func_call", NULL};
|
|
static const char *awk_branch_types[] = {"if_statement",
|
|
"for_statement",
|
|
"for_in_statement",
|
|
"while_statement",
|
|
"do_while_statement",
|
|
"switch_statement",
|
|
NULL};
|
|
static const char *awk_var_types[] = {"identifier", NULL};
|
|
static const char *awk_assign_types[] = {"assignment_exp", "update_exp", NULL};
|
|
static const char *awk_module_types[] = {"program", NULL};
|
|
static const char *zsh_func_types[] = {"function_definition", NULL};
|
|
static const char *zsh_call_types[] = {"command", "call_expression", NULL};
|
|
static const char *zsh_branch_types[] = {"if_statement", "case_statement", "while_statement",
|
|
"for_statement", NULL};
|
|
static const char *zsh_var_types[] = {"variable_name", NULL};
|
|
static const char *zsh_assign_types[] = {"variable_assignment", NULL};
|
|
static const char *zsh_module_types[] = {"program", NULL};
|
|
static const char *tcl_func_types[] = {"procedure", NULL};
|
|
static const char *tcl_class_types[] = {"namespace", NULL};
|
|
static const char *tcl_call_types[] = {"command", NULL};
|
|
static const char *tcl_branch_types[] = {"if", "while", "foreach", "try", "catch", NULL};
|
|
static const char *tcl_var_types[] = {"variable_substitution", NULL};
|
|
static const char *tcl_module_types[] = {"source_file", NULL};
|
|
static const char *ada_func_types[] = {"subprogram_declaration", "subprogram_body",
|
|
"entry_declaration", "expression_function_declaration",
|
|
NULL};
|
|
static const char *ada_class_types[] = {
|
|
"type_declaration", "full_type_declaration", "package_declaration",
|
|
"protected_type_declaration", "task_type_declaration", "component_declaration",
|
|
"object_declaration", "record_type_definition", NULL};
|
|
static const char *ada_field_types[] = {"component_declaration", NULL};
|
|
static const char *ada_call_types[] = {"function_call", "procedure_call_statement", NULL};
|
|
static const char *ada_import_types[] = {"with_clause", "use_clause", NULL};
|
|
static const char *ada_branch_types[] = {"if_statement",
|
|
"for_loop_statement",
|
|
"loop_statement",
|
|
"while_loop_statement",
|
|
"case_statement",
|
|
"select_statement",
|
|
NULL};
|
|
static const char *ada_var_types[] = {"object_declaration", "number_declaration", NULL};
|
|
static const char *ada_assign_types[] = {"assignment_statement", NULL};
|
|
static const char *ada_throw_types[] = {"raise_statement", NULL};
|
|
static const char *ada_module_types[] = {"compilation", NULL};
|
|
static const char *agda_func_types[] = {"function", NULL};
|
|
static const char *agda_class_types[] = {"data", "record", NULL};
|
|
static const char *agda_call_types[] = {"module_application", "expr", NULL};
|
|
static const char *agda_import_types[] = {"import", "open", "import_directive", "instance", NULL};
|
|
static const char *agda_branch_types[] = {"lambda", "match", "do", NULL};
|
|
static const char *agda_var_types[] = {"typed_binding", NULL};
|
|
static const char *agda_module_types[] = {"source_file", NULL};
|
|
static const char *racket_class_types[] = {"structure", NULL};
|
|
/* Racket def-forms (`(define (f ..) ..)`) are `list` nodes; the def-vs-call
|
|
* gate is in cbm_resolve_func_name (returns NULL for a non-def list). */
|
|
static const char *racket_func_types[] = {"list", NULL};
|
|
static const char *racket_call_types[] = {"list", NULL};
|
|
static const char *racket_var_types[] = {"symbol", NULL};
|
|
static const char *racket_module_types[] = {"program", NULL};
|
|
static const char *odin_func_types[] = {"procedure_declaration", "overloaded_procedure_declaration",
|
|
NULL};
|
|
static const char *odin_class_types[] = {"struct_declaration", "enum_declaration",
|
|
"union_declaration", "package_declaration", NULL};
|
|
static const char *odin_field_types[] = {"field_declaration", NULL};
|
|
static const char *odin_call_types[] = {"call_expression", "selector_call_expression", NULL};
|
|
static const char *odin_import_types[] = {"import_declaration", "import", "using_statement", NULL};
|
|
static const char *odin_branch_types[] = {"if_statement", "for_statement", "switch_statement",
|
|
"when_statement", NULL};
|
|
static const char *odin_var_types[] = {"variable_declaration", "const_declaration", NULL};
|
|
static const char *odin_assign_types[] = {"assignment_statement", NULL};
|
|
static const char *odin_module_types[] = {"source_file", NULL};
|
|
static const char *rescript_func_types[] = {"function", NULL};
|
|
static const char *rescript_call_types[] = {"call_expression", NULL};
|
|
static const char *rescript_import_types[] = {"open_statement", "include_statement", "include",
|
|
NULL};
|
|
static const char *rescript_branch_types[] = {"if_expression", "switch_expression",
|
|
"try_expression", NULL};
|
|
static const char *rescript_var_types[] = {"let_binding", NULL};
|
|
static const char *rescript_assign_types[] = {"let_declaration", "mutation_expression", NULL};
|
|
static const char *rescript_throw_types[] = {"exception_declaration", NULL};
|
|
static const char *rescript_decorator_types[] = {"decorator", NULL};
|
|
static const char *rescript_class_types[] = {"module_declaration", "type_declaration", NULL};
|
|
static const char *rescript_module_types[] = {"source_file", NULL};
|
|
static const char *purescript_func_types[] = {"function", NULL};
|
|
static const char *purescript_class_types[] = {"class_declaration", "data", "newtype", "type_alias",
|
|
NULL};
|
|
static const char *purescript_call_types[] = {"exp_apply", NULL};
|
|
static const char *purescript_import_types[] = {"import", "import_item", "instance", NULL};
|
|
static const char *purescript_branch_types[] = {"exp_if", "exp_case", "exp_do", NULL};
|
|
static const char *purescript_var_types[] = {"signature", NULL};
|
|
static const char *purescript_module_types[] = {"module", NULL};
|
|
/* The lambda node is `fun_expr` (the bare `fun` is only the keyword token, never
|
|
* a named node); its name lives on the enclosing let_binding's `pat` field, so
|
|
* cbm_resolve_func_name climbs to the parent for naming. A function application
|
|
* (`f x y`) is an `applicative` node — `infix_expr` is binary-operator
|
|
* application (`a + b`), not a call. */
|
|
static const char *nickel_func_types[] = {"fun_expr", NULL};
|
|
static const char *nickel_call_types[] = {"applicative", NULL};
|
|
static const char *nickel_import_types[] = {"import", "include", NULL};
|
|
static const char *nickel_branch_types[] = {"if", "match", NULL};
|
|
static const char *nickel_var_types[] = {"let", NULL};
|
|
static const char *nickel_module_types[] = {"source_file", NULL};
|
|
static const char *crystal_func_types[] = {"method_def", "abstract_method_def", NULL};
|
|
static const char *crystal_class_types[] = {"class_def", "struct_def", "module_def",
|
|
"enum_def", "annotation_def", "type_declaration",
|
|
NULL};
|
|
static const char *crystal_field_types[] = {"instance_var", "class_var", NULL};
|
|
static const char *crystal_call_types[] = {"call", "command", "implicit_object_call", NULL};
|
|
static const char *crystal_import_types[] = {"require", NULL};
|
|
static const char *crystal_branch_types[] = {"if", "unless", "case", "while",
|
|
"until", "begin_block", "rescue_block", NULL};
|
|
static const char *crystal_var_types[] = {"assign", "multi_assign", NULL};
|
|
static const char *crystal_assign_types[] = {"assign", "operator_assign", NULL};
|
|
static const char *crystal_decorator_types[] = {"annotation", NULL};
|
|
static const char *crystal_module_types[] = {"program", NULL};
|
|
static const char *teal_func_types[] = {"function_statement", "anon_function", "function_signature",
|
|
NULL};
|
|
static const char *teal_class_types[] = {"record_declaration", "interface_declaration",
|
|
"enum_declaration", "type_declaration", NULL};
|
|
static const char *teal_call_types[] = {"function_call", NULL};
|
|
static const char *teal_branch_types[] = {"if_statement", "while_statement",
|
|
"repeat_statement", "for_statement",
|
|
"generic_for_statement", NULL};
|
|
static const char *teal_var_types[] = {"var_declaration", NULL};
|
|
static const char *teal_assign_types[] = {"var_assignment", NULL};
|
|
static const char *teal_module_types[] = {"program", NULL};
|
|
static const char *hare_func_types[] = {"function_declaration", NULL};
|
|
static const char *hare_class_types[] = {"type_declaration", NULL};
|
|
static const char *hare_call_types[] = {"call_expression", NULL};
|
|
static const char *hare_import_types[] = {"use_statement", NULL};
|
|
static const char *hare_branch_types[] = {"if_statement", "for_statement", "switch_expression",
|
|
"match_expression", NULL};
|
|
static const char *hare_var_types[] = {"let_declaration", "const_declaration", NULL};
|
|
static const char *hare_assign_types[] = {"assignment_expression", NULL};
|
|
static const char *hare_module_types[] = {"source_file", NULL};
|
|
static const char *pony_func_types[] = {"method", "constructor", "ffi_method", "lambda_expression",
|
|
NULL};
|
|
static const char *pony_class_types[] = {
|
|
"actor_definition", "class_definition", "struct_definition", "trait_definition",
|
|
"interface_definition", "primitive_definition", "type_alias", NULL};
|
|
static const char *pony_call_types[] = {"call_expression", NULL};
|
|
static const char *pony_import_types[] = {"use_statement", NULL};
|
|
static const char *pony_branch_types[] = {"if_statement",
|
|
"match_statement",
|
|
"for_statement",
|
|
"while_statement",
|
|
"repeat_statement",
|
|
"try_statement",
|
|
NULL};
|
|
static const char *pony_var_types[] = {"variable_declaration", NULL};
|
|
static const char *pony_assign_types[] = {"assignment_expression", NULL};
|
|
static const char *pony_module_types[] = {"source_file", NULL};
|
|
static const char *luau_func_types[] = {"function_declaration", "function_definition", NULL};
|
|
static const char *luau_class_types[] = {"type_definition", NULL};
|
|
static const char *luau_call_types[] = {"function_call", NULL};
|
|
static const char *luau_branch_types[] = {"if_statement", "while_statement", "repeat_statement",
|
|
"for_statement", NULL};
|
|
static const char *luau_var_types[] = {"variable_declaration", NULL};
|
|
static const char *luau_assign_types[] = {"assignment_statement", NULL};
|
|
static const char *luau_module_types[] = {"program", NULL};
|
|
static const char *janet_module_types[] = {"source", NULL};
|
|
static const char *sway_func_types[] = {"function_item", "closure_expression",
|
|
"function_signature_item", NULL};
|
|
static const char *sway_class_types[] = {"struct_item", "enum_item", "trait_item",
|
|
"impl_item", "abi_item", NULL};
|
|
static const char *sway_call_types[] = {"call_expression", "abi_call_expression", NULL};
|
|
static const char *sway_import_types[] = {"use_declaration", NULL};
|
|
static const char *sway_branch_types[] = {"if_expression", "match_expression", "while_expression",
|
|
"for_expression", NULL};
|
|
static const char *sway_var_types[] = {"let_declaration", "const_item", NULL};
|
|
static const char *sway_assign_types[] = {"assignment_expression", NULL};
|
|
static const char *sway_module_types[] = {"source_file", NULL};
|
|
static const char *nasm_func_types[] = {"label", "preproc_def", "preproc_multiline_macro", NULL};
|
|
static const char *nasm_class_types[] = {"struc_declaration", NULL};
|
|
static const char *nasm_call_types[] = {"call_syntax_expression", "actual_instruction", NULL};
|
|
static const char *nasm_import_types[] = {"preproc_include", NULL};
|
|
static const char *nasm_var_types[] = {"label", NULL};
|
|
static const char *nasm_module_types[] = {"source_file", NULL};
|
|
static const char *assembly_func_types[] = {"label", NULL};
|
|
static const char *assembly_var_types[] = {"label", NULL};
|
|
static const char *assembly_module_types[] = {"program", NULL};
|
|
static const char *astro_module_types[] = {"document", NULL};
|
|
static const char *blade_module_types[] = {"document", NULL};
|
|
static const char *just_func_types[] = {"recipe", NULL};
|
|
static const char *just_call_types[] = {"function_call", "dependency", NULL};
|
|
static const char *just_import_types[] = {"import", NULL};
|
|
static const char *just_branch_types[] = {"if_expression", NULL};
|
|
static const char *just_assign_types[] = {"assignment", NULL};
|
|
static const char *just_module_types[] = {"source_file", NULL};
|
|
static const char *gotemplate_func_types[] = {"define_action", NULL};
|
|
static const char *gotemplate_call_types[] = {"function_call", "method_call", "template_action",
|
|
NULL};
|
|
static const char *gotemplate_module_types[] = {"template", NULL};
|
|
static const char *templ_func_types[] = {"function_declaration", "method_declaration",
|
|
"method_elem", NULL};
|
|
static const char *templ_class_types[] = {"component_declaration", "type_alias", "type_declaration",
|
|
"type_spec", NULL};
|
|
static const char *templ_call_types[] = {"call_expression", NULL};
|
|
static const char *templ_import_types[] = {"import", "import_declaration", NULL};
|
|
static const char *templ_module_types[] = {"source_file", NULL};
|
|
static const char *liquid_import_types[] = {"include", "include_statement", NULL};
|
|
static const char *liquid_module_types[] = {"template", NULL};
|
|
static const char *jinja2_module_types[] = {"source_file", NULL};
|
|
static const char *prisma_class_types[] = {"model_declaration",
|
|
"enum_declaration",
|
|
"type_declaration",
|
|
"generator_declaration",
|
|
"datasource_declaration",
|
|
"view_declaration",
|
|
NULL};
|
|
static const char *prisma_field_types[] = {"column_declaration", NULL};
|
|
static const char *prisma_call_types[] = {"call_expression", NULL};
|
|
static const char *prisma_module_types[] = {"program", NULL};
|
|
static const char *hyprlang_module_types[] = {"source_file", NULL};
|
|
static const char *dotenv_module_types[] = {"source_file", NULL};
|
|
static const char *diff_call_types[] = {NULL};
|
|
static const char *diff_module_types[] = {"source", NULL};
|
|
static const char *wgsl_func_types[] = {"function_declaration", NULL};
|
|
static const char *wgsl_class_types[] = {"struct_declaration", "type_alias_declaration",
|
|
"type_declaration", NULL};
|
|
static const char *wgsl_call_types[] = {"type_constructor_or_function_call_expression", NULL};
|
|
static const char *wgsl_import_types[] = {"enable_directive", NULL};
|
|
static const char *wgsl_branch_types[] = {"if_statement", "switch_statement", "for_statement",
|
|
"while_statement", "loop_statement", NULL};
|
|
static const char *wgsl_var_types[] = {"variable_declaration", NULL};
|
|
static const char *wgsl_assign_types[] = {"assignment_statement", NULL};
|
|
static const char *wgsl_module_types[] = {"translation_unit", NULL};
|
|
static const char *kdl_module_types[] = {"document", NULL};
|
|
static const char *json5_module_types[] = {"document", NULL};
|
|
static const char *jsonnet_func_types[] = {"anonymous_function", "bind", NULL};
|
|
static const char *jsonnet_call_types[] = {"functioncall", NULL};
|
|
static const char *jsonnet_import_types[] = {"import", "importstr", NULL};
|
|
static const char *jsonnet_branch_types[] = {"conditional", NULL};
|
|
static const char *jsonnet_var_types[] = {"local_bind", NULL};
|
|
static const char *jsonnet_module_types[] = {"document", NULL};
|
|
static const char *ron_module_types[] = {"source_file", NULL};
|
|
static const char *thrift_func_types[] = {"function_definition", "service_definition", NULL};
|
|
static const char *thrift_class_types[] = {
|
|
"struct_definition", "union_definition", "enum_definition", "exception_definition",
|
|
"interaction_definition", "package_declaration", "service_definition", NULL};
|
|
static const char *thrift_field_types[] = {"field", NULL};
|
|
static const char *thrift_import_types[] = {"include_statement", "extends", "include",
|
|
"namespace_declaration", NULL};
|
|
static const char *thrift_var_types[] = {"const_definition", NULL};
|
|
static const char *thrift_module_types[] = {"document", NULL};
|
|
static const char *capnp_func_types[] = {"method", NULL};
|
|
/* custom_type (a type REFERENCE inside field_type) and type_definition (LHS of a
|
|
* `using X = ...` directive) are not top-level type defs — including them would
|
|
* mint spurious Class nodes for every typed field/return. */
|
|
static const char *capnp_class_types[] = {"struct", "enum", "interface", NULL};
|
|
static const char *capnp_field_types[] = {"field", NULL};
|
|
static const char *capnp_import_types[] = {"import", "extends", "using_directive", NULL};
|
|
static const char *capnp_var_types[] = {"const", NULL};
|
|
static const char *capnp_module_types[] = {"source", NULL};
|
|
static const char *properties_var_types[] = {"property", NULL};
|
|
/* tree-sitter-properties roots the tree at `file`, not `source_file`. */
|
|
static const char *properties_module_types[] = {"file", "source_file", NULL};
|
|
static const char *sshconfig_module_types[] = {"source_file", NULL};
|
|
static const char *bibtex_call_types[] = {NULL};
|
|
static const char *bibtex_module_types[] = {"document", NULL};
|
|
static const char *starlark_func_types[] = {"function_definition", "lambda", NULL};
|
|
static const char *starlark_call_types[] = {"call", NULL};
|
|
static const char *starlark_branch_types[] = {"if_statement", "for_statement", NULL};
|
|
static const char *starlark_var_types[] = {"identifier", NULL};
|
|
static const char *starlark_assign_types[] = {"assignment", "augmented_assignment", NULL};
|
|
static const char *starlark_import_types[] = {"with_clause", NULL};
|
|
static const char *starlark_module_types[] = {"module", NULL};
|
|
static const char *bicep_func_types[] = {"user_defined_function", "lambda_expression", NULL};
|
|
static const char *bicep_class_types[] = {"resource_declaration", "type_declaration",
|
|
"module_declaration", NULL};
|
|
static const char *bicep_import_types[] = {"import_statement", "module_declaration", "import",
|
|
"using_statement", NULL};
|
|
static const char *bicep_var_types[] = {"variable_declaration", "parameter_declaration",
|
|
"output_declaration", NULL};
|
|
static const char *bicep_call_types[] = {"call_expression", NULL};
|
|
static const char *bicep_module_types[] = {"program", NULL};
|
|
static const char *csv_module_types[] = {"document", NULL};
|
|
static const char *requirements_module_types[] = {"file", NULL};
|
|
static const char *hlsl_func_types[] = {"function_definition", "lambda_expression", NULL};
|
|
static const char *hlsl_class_types[] = {"class_specifier",
|
|
"struct_specifier",
|
|
"enum_specifier",
|
|
"module_declaration",
|
|
"type_definition",
|
|
"union_specifier",
|
|
NULL};
|
|
static const char *hlsl_call_types[] = {"call_expression", "new_expression", NULL};
|
|
static const char *hlsl_import_types[] = {"preproc_include", "import", "import_declaration", NULL};
|
|
static const char *hlsl_branch_types[] = {"if_statement", "for_statement", "while_statement",
|
|
"do_statement", "switch_statement", NULL};
|
|
static const char *hlsl_var_types[] = {"declaration", NULL};
|
|
static const char *hlsl_assign_types[] = {"assignment_expression", NULL};
|
|
static const char *hlsl_module_types[] = {"translation_unit", NULL};
|
|
static const char *vhdl_class_types[] = {
|
|
"entity_declaration", "architecture_definition", "component_declaration",
|
|
"interface_declaration", "package_declaration", "protected_type_declaration",
|
|
"record_type_definition", "type_declaration", NULL};
|
|
static const char *vhdl_call_types[] = {"function_call", "procedure_call_statement",
|
|
"component_instantiation_statement", "parenthesis_group",
|
|
NULL};
|
|
static const char *vhdl_import_types[] = {"library_clause", "use_clause", NULL};
|
|
static const char *vhdl_branch_types[] = {"if_statement", "case_statement", "loop_statement", NULL};
|
|
static const char *vhdl_var_types[] = {"variable_declaration", "signal_declaration",
|
|
"constant_declaration", NULL};
|
|
static const char *vhdl_assign_types[] = {"variable_assignment", "signal_assignment", NULL};
|
|
static const char *vhdl_func_types[] = {"subprogram_declaration", "subprogram_definition", NULL};
|
|
static const char *vhdl_module_types[] = {"design_file", NULL};
|
|
static const char *systemverilog_func_types[] = {"function_declaration", "task_declaration",
|
|
"function_body_declaration", "function_statement",
|
|
NULL};
|
|
static const char *systemverilog_class_types[] = {"class_declaration",
|
|
"module_declaration",
|
|
"interface_declaration",
|
|
"library_declaration",
|
|
"package_declaration",
|
|
"type_declaration",
|
|
NULL};
|
|
static const char *systemverilog_call_types[] = {"function_subroutine_call", "system_tf_call",
|
|
"method_call", NULL};
|
|
static const char *systemverilog_import_types[] = {
|
|
"package_import_declaration", "extends", "import", "include",
|
|
"include_statement", "instance", "use_clause", NULL};
|
|
static const char *systemverilog_branch_types[] = {"case_statement", "if", NULL};
|
|
static const char *systemverilog_var_types[] = {"parameter", "localparam", NULL};
|
|
static const char *systemverilog_module_types[] = {"source_file", NULL};
|
|
static const char *devicetree_call_types[] = {"call_expression", NULL};
|
|
static const char *devicetree_import_types[] = {"dtsi_include", "preproc_include", NULL};
|
|
static const char *devicetree_module_types[] = {"document", NULL};
|
|
static const char *linkerscript_call_types[] = {"call_expression", NULL};
|
|
static const char *linkerscript_module_types[] = {"linkerscript", NULL};
|
|
static const char *gn_call_types[] = {"call_expression", NULL};
|
|
static const char *gn_import_types[] = {"import_statement", "import", NULL};
|
|
static const char *gn_branch_types[] = {"if_statement", "foreach_statement", NULL};
|
|
static const char *gn_assign_types[] = {"assignment_statement", NULL};
|
|
static const char *gn_module_types[] = {"source_file", NULL};
|
|
static const char *kconfig_class_types[] = {"config", "menuconfig", "choice", "type_definition",
|
|
NULL};
|
|
static const char *kconfig_import_types[] = {"source", NULL};
|
|
static const char *kconfig_branch_types[] = {"if", NULL};
|
|
static const char *kconfig_module_types[] = {"source", NULL};
|
|
/* `anonymous_python_function` is the tree-sitter-bitbake node for a
|
|
* `python do_foo() {...}` task; `function_definition` is a `do_foo() {...}`
|
|
* shell task. (`recipe` is the file root, not a function.) */
|
|
static const char *bitbake_func_types[] = {"function_definition", "anonymous_python_function",
|
|
NULL};
|
|
static const char *bitbake_var_types[] = {"variable_assignment", NULL};
|
|
static const char *bitbake_call_types[] = {"call", NULL};
|
|
static const char *bitbake_import_types[] = {
|
|
"export_statement", "import", "import_from_statement",
|
|
"import_statement", "include", "include_directive",
|
|
"require", "with_clause", NULL};
|
|
static const char *bitbake_module_types[] = {"source_file", NULL};
|
|
static const char *smali_func_types[] = {"method_definition", NULL};
|
|
static const char *smali_class_types[] = {"class_definition", NULL};
|
|
static const char *smali_field_types[] = {"field_definition", NULL};
|
|
static const char *smali_import_types[] = {"super_directive", "implements_directive", NULL};
|
|
static const char *smali_module_types[] = {"source_file", NULL};
|
|
static const char *tablegen_func_types[] = {"def", "multiclass", "defm", NULL};
|
|
static const char *tablegen_class_types[] = {"class", NULL};
|
|
static const char *tablegen_import_types[] = {"include", "include_directive", NULL};
|
|
static const char *tablegen_module_types[] = {"source_file", NULL};
|
|
static const char *ispc_func_types[] = {"function_definition", NULL};
|
|
static const char *ispc_class_types[] = {"struct_specifier", "enum_specifier", "type_definition",
|
|
"union_specifier", NULL};
|
|
static const char *ispc_call_types[] = {"call_expression", "new_expression", NULL};
|
|
static const char *ispc_branch_types[] = {"if_statement", "switch_statement", "while_statement",
|
|
NULL};
|
|
static const char *ispc_var_types[] = {"declaration", NULL};
|
|
static const char *ispc_assign_types[] = {"assignment_expression", NULL};
|
|
static const char *ispc_import_types[] = {"preproc_include", NULL};
|
|
static const char *ispc_module_types[] = {"translation_unit", NULL};
|
|
static const char *cairo_func_types[] = {"function_definition", "function_signature", NULL};
|
|
static const char *cairo_class_types[] = {
|
|
"struct_definition", "enum_item", "trait_item", "impl_item",
|
|
"struct_item", "type_definition", NULL};
|
|
static const char *cairo_call_types[] = {"call_expression", "call", NULL};
|
|
static const char *cairo_import_types[] = {"use_declaration", "import", "import_statement", NULL};
|
|
static const char *cairo_branch_types[] = {"if_expression", "match_expression", "loop_expression",
|
|
NULL};
|
|
static const char *cairo_var_types[] = {"let_declaration", "const_item", NULL};
|
|
static const char *cairo_assign_types[] = {"assignment_expression", NULL};
|
|
static const char *cairo_module_types[] = {"source_file", NULL};
|
|
static const char *move_func_types[] = {"function_item", NULL};
|
|
/* This vendored move grammar models only function_item + module as named defs;
|
|
* "struct"/"enum" exist only as anonymous keyword tokens, never as parent nodes,
|
|
* so there is no class/struct/enum definition node to match. */
|
|
static const char *move_call_types[] = {"call_expression", NULL};
|
|
static const char *move_import_types[] = {"use_declaration", NULL};
|
|
static const char *move_branch_types[] = {"if_expression", "while_expression", "loop_expression",
|
|
NULL};
|
|
static const char *move_var_types[] = {"let", "const", NULL};
|
|
static const char *move_assign_types[] = {"assignment_expression", NULL};
|
|
static const char *move_module_types[] = {"source_file", NULL};
|
|
static const char *squirrel_func_types[] = {"function_declaration", "anonymous_function",
|
|
"lambda_expression", NULL};
|
|
static const char *squirrel_class_types[] = {"class_declaration", "enum_declaration", NULL};
|
|
static const char *squirrel_call_types[] = {"call_expression", NULL};
|
|
static const char *squirrel_branch_types[] = {"if_statement", "switch_statement", "while_statement",
|
|
NULL};
|
|
static const char *squirrel_var_types[] = {"local_declaration", NULL};
|
|
static const char *squirrel_assign_types[] = {"assignment_expression", NULL};
|
|
static const char *squirrel_import_types[] = {"extends", NULL};
|
|
static const char *squirrel_module_types[] = {"source_file", NULL};
|
|
static const char *func_func_types[] = {"function_definition", NULL};
|
|
static const char *func_call_types[] = {"method_call", "function_application", NULL};
|
|
static const char *func_import_types[] = {"include_directive", NULL};
|
|
static const char *func_module_types[] = {"source_file", NULL};
|
|
static const char *regex_module_types[] = {"pattern", NULL};
|
|
static const char *jsdoc_module_types[] = {"document", NULL};
|
|
static const char *rst_module_types[] = {"document", NULL};
|
|
static const char *beancount_import_types[] = {"include", NULL};
|
|
static const char *beancount_module_types[] = {"file", NULL};
|
|
static const char *mermaid_module_types[] = {"source_file", NULL};
|
|
static const char *puppet_func_types[] = {"function_declaration", "lambda", NULL};
|
|
static const char *puppet_class_types[] = {"class_definition", "node_definition",
|
|
"resource_declaration", "type_declaration", NULL};
|
|
static const char *puppet_call_types[] = {"function_call", "include_statement", NULL};
|
|
static const char *puppet_import_types[] = {"include_statement", "require_statement", "include",
|
|
"require", NULL};
|
|
static const char *puppet_branch_types[] = {"if_statement", "unless_statement", "case_statement",
|
|
NULL};
|
|
static const char *puppet_var_types[] = {"variable", NULL};
|
|
static const char *puppet_assign_types[] = {"assignment", NULL};
|
|
static const char *puppet_module_types[] = {"source_file", NULL};
|
|
static const char *po_module_types[] = {"source_file", NULL};
|
|
static const char *gitattributes_module_types[] = {"source", NULL};
|
|
static const char *gitignore_module_types[] = {"document", NULL};
|
|
static const char *slang_func_types[] = {"function_definition", "lambda_expression", NULL};
|
|
static const char *slang_class_types[] = {"class_specifier",
|
|
"enum_specifier",
|
|
"module_declaration",
|
|
"struct_specifier",
|
|
"type_definition",
|
|
"union_specifier",
|
|
NULL};
|
|
static const char *slang_call_types[] = {"call_expression", "new_expression", NULL};
|
|
static const char *slang_import_types[] = {"import", "import_declaration", "import_statement",
|
|
"preproc_include", NULL};
|
|
static const char *slang_module_types[] = {"source_file", NULL};
|
|
static const char *llvm_module_types[] = {"source_file", NULL};
|
|
static const char *smithy_func_types[] = {"operation_statement", "service_statement",
|
|
"resource_statement", NULL};
|
|
static const char *smithy_class_types[] = {"structure_statement", "union_statement",
|
|
"enum_statement", NULL};
|
|
static const char *smithy_field_types[] = {"shape_member", NULL};
|
|
static const char *smithy_import_types[] = {"use_statement", NULL};
|
|
static const char *smithy_module_types[] = {"source_file", NULL};
|
|
static const char *wit_func_types[] = {"func_item", "resource_method", "export_item", "import_item",
|
|
NULL};
|
|
static const char *wit_class_types[] = {"record_item", "resource_item", "enum_items",
|
|
"variant_items", "flags_items", NULL};
|
|
static const char *wit_field_types[] = {"record_field", NULL};
|
|
static const char *wit_import_types[] = {
|
|
"import_item", "toplevel_use_item", "export_item", "import", "include", "include_item", NULL};
|
|
static const char *wit_module_types[] = {"source_file", NULL};
|
|
static const char *tlaplus_func_types[] = {"operator_definition", "function_definition", NULL};
|
|
static const char *tlaplus_call_types[] = {"function_evaluation", "call", "bound_op", NULL};
|
|
static const char *tlaplus_import_types[] = {"extends", "instance", NULL};
|
|
static const char *tlaplus_branch_types[] = {"if_then_else", "case", NULL};
|
|
static const char *tlaplus_var_types[] = {"variable_declaration", NULL};
|
|
static const char *tlaplus_module_types[] = {"source_file", NULL};
|
|
static const char *pkl_func_types[] = {"classMethod", "objectMethod", NULL};
|
|
static const char *pkl_class_types[] = {"clazz", "typeAlias", NULL};
|
|
static const char *pkl_import_types[] = {
|
|
"importClause", "importGlobClause", "importExpr", "extendsOrAmendsClause",
|
|
"extends", "import", NULL};
|
|
static const char *pkl_var_types[] = {"classProperty", "objectProperty", NULL};
|
|
static const char *pkl_module_types[] = {"module", NULL};
|
|
/* Both access exprs double as plain property reads; extract_pkl_callee keeps
|
|
* only the ones carrying an argumentList. `newExpr` resolves to its type. */
|
|
static const char *pkl_call_types[] = {"unqualifiedAccessExpr", "qualifiedAccessExpr", "newExpr",
|
|
NULL};
|
|
/* Control-flow only, matching every other spec (short-circuit operators are
|
|
* deliberately excluded). `forGenerator` is also a loop — see helpers.c. */
|
|
static const char *pkl_branch_types[] = {"ifExpr", "whenGenerator", "forGenerator", NULL};
|
|
static const char *pkl_throw_types[] = {"throwExpr", NULL};
|
|
static const char *pkl_decorator_types[] = {"annotation", NULL};
|
|
static const char *gomod_var_types[] = {"require_directive", "replace_directive", NULL};
|
|
static const char *gomod_import_types[] = {"require", NULL};
|
|
static const char *gomod_module_types[] = {"source_file", NULL};
|
|
static const char *apex_func_types[] = {"method_declaration", "constructor_declaration",
|
|
"trigger_declaration", NULL};
|
|
static const char *apex_class_types[] = {"class_declaration", "interface_declaration",
|
|
"enum_declaration", NULL};
|
|
static const char *apex_field_types[] = {"field_declaration", NULL};
|
|
static const char *apex_call_types[] = {"method_invocation", NULL};
|
|
static const char *apex_branch_types[] = {
|
|
"if_statement", "for_statement", "while_statement",
|
|
"do_statement", "switch_expression", "try_statement",
|
|
"catch_clause", "enhanced_for_statement", NULL};
|
|
static const char *apex_var_types[] = {"local_variable_declaration", NULL};
|
|
static const char *apex_assign_types[] = {"assignment_expression", NULL};
|
|
static const char *apex_throw_types[] = {"throw_statement", NULL};
|
|
static const char *apex_decorator_types[] = {"annotation", NULL};
|
|
static const char *apex_import_types[] = {"extends", "with_clause", NULL};
|
|
static const char *apex_module_types[] = {"parser_output", NULL};
|
|
static const char *soql_import_types[] = {"with_clause", NULL};
|
|
static const char *soql_module_types[] = {"source_file", NULL};
|
|
static const char *sosl_import_types[] = {"with_clause", NULL};
|
|
static const char *sosl_module_types[] = {"source_file", NULL};
|
|
|
|
static const char *make_import_types[] = {"include", "include_directive", NULL};
|
|
|
|
// ==================== PINE SCRIPT ====================
|
|
// Node names verified against kvarenzn/tree-sitter-pine grammar.js.
|
|
static const char *pine_func_types[] = {"function_declaration_statement", NULL};
|
|
static const char *pine_class_types[] = {"type_definition_statement", NULL};
|
|
static const char *pine_module_types[] = {"source_file", NULL};
|
|
static const char *pine_call_types[] = {"call", NULL};
|
|
static const char *pine_var_types[] = {"variable_definition_statement",
|
|
"tuple_declaration_statement", NULL};
|
|
static const char *pine_branch_types[] = {"if_statement", "switch_statement", "for_statement",
|
|
"for_in_statement", "while_statement", NULL};
|
|
static const char *pine_assign_types[] = {"reassignment_statement", NULL};
|
|
static const char *mojo_func_types[] = {"function_definition", NULL};
|
|
static const char *mojo_class_types[] = {"class_definition", "trait_definition", NULL};
|
|
static const char *mojo_module_types[] = {"module", NULL};
|
|
static const char *mojo_call_types[] = {"call", NULL};
|
|
static const char *mojo_import_types[] = {"import_statement", "import_from_statement",
|
|
"future_import_statement", NULL};
|
|
static const char *mojo_branch_types[] = {"if_statement",
|
|
"match_statement",
|
|
"for_statement",
|
|
"while_statement",
|
|
"try_statement",
|
|
"with_statement",
|
|
NULL};
|
|
static const char *mojo_var_types[] = {"assignment", NULL};
|
|
static const char *mojo_assign_types[] = {"assignment", "augmented_assignment", NULL};
|
|
|
|
// ==================== PL/SQL ====================
|
|
// Node names verified against AndreasMaierDe/tree-sitter-plsql grammar.js.
|
|
static const char *plsql_func_types[] = {"create_function",
|
|
"create_procedure",
|
|
"function_definition",
|
|
"procedure_definition",
|
|
"function_declaration",
|
|
"procedure_declaration",
|
|
NULL};
|
|
static const char *plsql_class_types[] = {"create_package", "create_package_body", "create_type",
|
|
"create_type_body", "create_trigger", NULL};
|
|
static const char *plsql_module_types[] = {"source_file", NULL};
|
|
static const char *plsql_call_types[] = {"ref_call", NULL};
|
|
static const char *plsql_branch_types[] = {"if_statement",
|
|
"case_statement",
|
|
"basic_loop_statement",
|
|
"for_loop_statement",
|
|
"while_loop_statement",
|
|
"exception_handler",
|
|
NULL};
|
|
static const char *plsql_assign_types[] = {"assignment_statement", NULL};
|
|
static const char *plsql_throw_types[] = {"raise_statement", NULL};
|
|
|
|
// InterSystems ObjectScript. Node names verified against
|
|
// intersystems/tree-sitter-objectscript grammar.
|
|
static const char *objectscript_udl_func_types[] = {"method", "classmethod", "query", NULL};
|
|
static const char *objectscript_udl_class_types[] = {"class_definition", NULL};
|
|
static const char *objectscript_udl_field_types[] = {
|
|
"property", "parameter", "index", "trigger", "xdata", "storage", "foreignkey", NULL};
|
|
static const char *objectscript_udl_call_types[] = {"class_method_call", "method_call",
|
|
"relative_dot_method", "macro", NULL};
|
|
static const char *objectscript_udl_module_types[] = {"source_file", NULL};
|
|
/* Branching nodes for cyclomatic complexity (verified against grammar node-types) */
|
|
static const char *objectscript_udl_branch_types[] = {
|
|
"command_if", "command_for", "command_while", "elseif_block", "catch_block", NULL};
|
|
|
|
/* Parameterized entries are `procedure` nodes whose direct `tag` child names
|
|
* the callable; bare labels remain standalone `tag` nodes. */
|
|
static const char *objectscript_routine_func_types[] = {"procedure", "tag", NULL};
|
|
static const char *objectscript_routine_call_types[] = {"extrinsic_function", "routine_tag_call",
|
|
NULL};
|
|
static const char *objectscript_routine_module_types[] = {"source_file", NULL};
|
|
// ==================== SPEC TABLE ====================
|
|
|
|
static const CBMLangSpec lang_specs[CBM_LANG_COUNT] = {
|
|
// CBM_LANG_GO
|
|
[CBM_LANG_GO] = {CBM_LANG_GO, go_func_types, go_class_types, go_field_types, go_module_types,
|
|
go_call_types, go_import_types, go_import_types, go_branch_types, go_var_types,
|
|
go_assign_types, empty_types, NULL, empty_types, go_env_funcs, NULL,
|
|
tree_sitter_go, NULL},
|
|
|
|
// CBM_LANG_PYTHON
|
|
[CBM_LANG_PYTHON] = {CBM_LANG_PYTHON, py_func_types, py_class_types, empty_types,
|
|
py_module_types, py_call_types, py_import_types, py_import_from_types,
|
|
py_branch_types, py_var_types, py_var_types, py_throw_types, NULL,
|
|
py_decorator_types, py_env_funcs, py_env_members, tree_sitter_python,
|
|
NULL},
|
|
|
|
// CBM_LANG_JAVASCRIPT
|
|
[CBM_LANG_JAVASCRIPT] =
|
|
{CBM_LANG_JAVASCRIPT, js_func_types, js_class_types, empty_types, js_module_types,
|
|
js_call_types, js_import_types, js_import_types, js_branch_types, js_var_types,
|
|
(const char *[]){"assignment_expression", "augmented_assignment_expression", NULL},
|
|
js_throw_types, NULL, empty_types, NULL, js_env_members, tree_sitter_javascript, NULL},
|
|
|
|
// CBM_LANG_TYPESCRIPT
|
|
[CBM_LANG_TYPESCRIPT] = {CBM_LANG_TYPESCRIPT, ts_func_types, ts_class_types, empty_types,
|
|
js_module_types, js_call_types, js_import_types, js_import_types,
|
|
js_branch_types, js_var_types,
|
|
(const char *[]){"assignment_expression",
|
|
"augmented_assignment_expression", NULL},
|
|
js_throw_types, NULL, ts_decorator_types, NULL, ts_env_members,
|
|
tree_sitter_typescript, NULL},
|
|
|
|
// CBM_LANG_TSX
|
|
[CBM_LANG_TSX] =
|
|
{CBM_LANG_TSX, ts_func_types, ts_class_types, empty_types, js_module_types, js_call_types,
|
|
js_import_types, js_import_types, js_branch_types, js_var_types,
|
|
(const char *[]){"assignment_expression", "augmented_assignment_expression", NULL},
|
|
js_throw_types, NULL, ts_decorator_types, NULL, ts_env_members, tree_sitter_tsx, NULL},
|
|
|
|
// CBM_LANG_RUST
|
|
[CBM_LANG_RUST] = {CBM_LANG_RUST, rust_func_types, rust_class_types, rust_field_types,
|
|
rust_module_types, rust_call_types, rust_import_types,
|
|
rust_import_from_types, rust_branch_types, rust_var_types, rust_assign_types,
|
|
empty_types, NULL, rust_decorator_types, rust_env_funcs, NULL,
|
|
tree_sitter_rust, NULL},
|
|
|
|
// CBM_LANG_JAVA
|
|
[CBM_LANG_JAVA] = {CBM_LANG_JAVA, java_func_types, java_class_types, java_field_types,
|
|
java_module_types, java_call_types, java_import_types, java_import_types,
|
|
java_branch_types, java_var_types, java_assign_types, java_throw_types,
|
|
"throws", java_decorator_types, java_env_funcs, NULL, tree_sitter_java,
|
|
NULL},
|
|
|
|
// CBM_LANG_CPP
|
|
[CBM_LANG_CPP] = {CBM_LANG_CPP, cpp_func_types, cpp_class_types, cpp_field_types,
|
|
cpp_module_types, cpp_call_types, cpp_import_types, cpp_import_types,
|
|
cpp_branch_types, cpp_var_types, cpp_assign_types, cpp_throw_types, NULL,
|
|
empty_types, cpp_env_funcs, NULL, tree_sitter_cpp, NULL},
|
|
|
|
// CBM_LANG_CSHARP
|
|
[CBM_LANG_CSHARP] = {CBM_LANG_CSHARP, cs_func_types, cs_class_types, cs_field_types,
|
|
cs_module_types, cs_call_types, cs_import_types, cs_import_types,
|
|
cs_branch_types, cs_var_types, cs_assign_types, cs_throw_types, NULL,
|
|
cs_decorator_types, cs_env_funcs, NULL, tree_sitter_c_sharp, NULL},
|
|
|
|
// CBM_LANG_PHP
|
|
[CBM_LANG_PHP] = {CBM_LANG_PHP, php_func_types, php_class_types, empty_types, php_module_types,
|
|
php_call_types, php_import_types, empty_types, php_branch_types,
|
|
php_var_types, php_assign_types, php_throw_types, NULL, php_decorator_types,
|
|
php_env_funcs, NULL, tree_sitter_php_only, NULL},
|
|
|
|
// CBM_LANG_LUA
|
|
[CBM_LANG_LUA] = {CBM_LANG_LUA, lua_func_types, empty_types, empty_types, lua_module_types,
|
|
lua_call_types, lua_import_types, empty_types, lua_branch_types,
|
|
lua_var_types, lua_assign_types, empty_types, NULL, empty_types,
|
|
lua_env_funcs, NULL, tree_sitter_lua, NULL},
|
|
|
|
// CBM_LANG_SCALA
|
|
[CBM_LANG_SCALA] = {CBM_LANG_SCALA, scala_func_types, scala_class_types, empty_types,
|
|
scala_module_types, scala_call_types, scala_import_types,
|
|
scala_import_types, scala_branch_types, scala_var_types, scala_assign_types,
|
|
scala_throw_types, NULL, scala_decorator_types, scala_env_funcs, NULL,
|
|
tree_sitter_scala, NULL},
|
|
|
|
// CBM_LANG_KOTLIN
|
|
[CBM_LANG_KOTLIN] = {CBM_LANG_KOTLIN, kotlin_func_types, kotlin_class_types, empty_types,
|
|
kotlin_module_types, kotlin_call_types, kotlin_import_types,
|
|
kotlin_import_types, kotlin_branch_types, kotlin_var_types,
|
|
kotlin_assign_types, kotlin_throw_types, NULL, kotlin_decorator_types,
|
|
kotlin_env_funcs, NULL, tree_sitter_kotlin, NULL},
|
|
|
|
// CBM_LANG_RUBY
|
|
[CBM_LANG_RUBY] = {CBM_LANG_RUBY, ruby_func_types, ruby_class_types, empty_types,
|
|
ruby_module_types, ruby_call_types, ruby_import_types, empty_types,
|
|
ruby_branch_types, ruby_var_types, ruby_assign_types, empty_types, NULL,
|
|
empty_types, NULL, ruby_env_members, tree_sitter_ruby, NULL},
|
|
|
|
// CBM_LANG_C
|
|
[CBM_LANG_C] = {CBM_LANG_C, c_func_types, c_class_types, c_field_types, c_module_types,
|
|
c_call_types, c_import_types, empty_types, c_branch_types, c_var_types,
|
|
c_assign_types, empty_types, NULL, empty_types, c_env_funcs, NULL,
|
|
tree_sitter_c, NULL},
|
|
|
|
// CBM_LANG_BASH
|
|
[CBM_LANG_BASH] = {CBM_LANG_BASH, bash_func_types, empty_types, empty_types, bash_module_types,
|
|
bash_call_types, bash_import_types, empty_types, bash_branch_types,
|
|
bash_var_types, bash_var_types, empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_bash, NULL},
|
|
|
|
// CBM_LANG_ZIG
|
|
[CBM_LANG_ZIG] = {CBM_LANG_ZIG, zig_func_types, zig_class_types, zig_field_types,
|
|
zig_module_types, zig_call_types, zig_import_types, empty_types,
|
|
zig_branch_types, zig_var_types, zig_assign_types, empty_types, NULL,
|
|
empty_types, zig_env_funcs, NULL, tree_sitter_zig, NULL},
|
|
|
|
// CBM_LANG_ELIXIR
|
|
[CBM_LANG_ELIXIR] = {CBM_LANG_ELIXIR, elixir_func_types, empty_types, empty_types,
|
|
elixir_module_types, elixir_call_types, elixir_import_types, empty_types,
|
|
elixir_branch_types, elixir_var_types, elixir_var_types, empty_types, NULL,
|
|
empty_types, elixir_env_funcs, NULL, tree_sitter_elixir, NULL},
|
|
|
|
// CBM_LANG_HASKELL
|
|
[CBM_LANG_HASKELL] = {CBM_LANG_HASKELL, haskell_func_types, haskell_class_types, empty_types,
|
|
haskell_module_types, haskell_call_types, haskell_import_types,
|
|
empty_types, haskell_branch_types, haskell_var_types, haskell_var_types,
|
|
empty_types, NULL, empty_types, haskell_env_funcs, NULL,
|
|
tree_sitter_haskell, NULL},
|
|
|
|
// CBM_LANG_OCAML
|
|
[CBM_LANG_OCAML] = {CBM_LANG_OCAML, ocaml_func_types, ocaml_class_types, empty_types,
|
|
ocaml_module_types, ocaml_call_types, ocaml_import_types, empty_types,
|
|
ocaml_branch_types, ocaml_var_types, ocaml_var_types, empty_types, NULL,
|
|
empty_types, ocaml_env_funcs, NULL, tree_sitter_ocaml, NULL},
|
|
|
|
// CBM_LANG_OBJC
|
|
[CBM_LANG_OBJC] = {CBM_LANG_OBJC, objc_func_types, objc_class_types, objc_field_types,
|
|
objc_module_types, objc_call_types, objc_import_types, empty_types,
|
|
objc_branch_types, objc_var_types, objc_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_objc, NULL},
|
|
|
|
// CBM_LANG_SWIFT
|
|
[CBM_LANG_SWIFT] = {CBM_LANG_SWIFT, swift_func_types, swift_class_types, swift_field_types,
|
|
swift_module_types, swift_call_types, swift_import_types, empty_types,
|
|
swift_branch_types, swift_var_types, swift_assign_types, swift_throw_types,
|
|
NULL, swift_decorator_types, NULL, NULL, tree_sitter_swift, NULL},
|
|
|
|
// CBM_LANG_DART
|
|
[CBM_LANG_DART] = {CBM_LANG_DART, dart_func_types, dart_class_types, dart_field_types,
|
|
dart_module_types, dart_call_types, dart_import_types, empty_types,
|
|
dart_branch_types, dart_var_types, dart_assign_types, dart_throw_types, NULL,
|
|
dart_decorator_types, NULL, NULL, tree_sitter_dart, NULL},
|
|
|
|
// CBM_LANG_PERL
|
|
[CBM_LANG_PERL] = {CBM_LANG_PERL, perl_func_types, empty_types, empty_types, perl_module_types,
|
|
perl_call_types, perl_import_types, empty_types, perl_branch_types,
|
|
perl_var_types, perl_assign_types, empty_types, NULL, empty_types,
|
|
perl_env_funcs, NULL, tree_sitter_perl, NULL},
|
|
|
|
// CBM_LANG_GROOVY
|
|
[CBM_LANG_GROOVY] = {CBM_LANG_GROOVY, groovy_func_types, groovy_class_types, empty_types,
|
|
groovy_module_types, groovy_call_types, groovy_import_types, empty_types,
|
|
groovy_branch_types, groovy_var_types, groovy_assign_types,
|
|
groovy_throw_types, NULL, groovy_decorator_types, NULL, NULL,
|
|
tree_sitter_groovy, NULL},
|
|
|
|
// CBM_LANG_ERLANG
|
|
[CBM_LANG_ERLANG] = {CBM_LANG_ERLANG, erlang_func_types, erlang_class_types, empty_types,
|
|
erlang_module_types, erlang_call_types, erlang_import_types, empty_types,
|
|
erlang_branch_types, erlang_var_types, erlang_assign_types,
|
|
erlang_throw_types, NULL, empty_types, NULL, NULL, tree_sitter_erlang,
|
|
NULL},
|
|
|
|
// CBM_LANG_R
|
|
[CBM_LANG_R] = {CBM_LANG_R, r_func_types, empty_types, empty_types, r_module_types,
|
|
r_call_types, r_import_types, empty_types, r_branch_types, r_var_types,
|
|
r_var_types, empty_types, NULL, empty_types, r_env_funcs, NULL, tree_sitter_r,
|
|
NULL},
|
|
|
|
// CBM_LANG_HTML
|
|
[CBM_LANG_HTML] = {CBM_LANG_HTML, empty_types, empty_types, empty_types, html_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, NULL, empty_types, NULL, NULL, tree_sitter_html,
|
|
html_embedded_imports},
|
|
|
|
// CBM_LANG_CSS
|
|
[CBM_LANG_CSS] = {CBM_LANG_CSS, empty_types, empty_types, empty_types, css_module_types,
|
|
css_call_types, css_import_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_css,
|
|
NULL},
|
|
|
|
// CBM_LANG_SCSS
|
|
[CBM_LANG_SCSS] = {CBM_LANG_SCSS, scss_func_types, empty_types, empty_types, scss_module_types,
|
|
scss_call_types, scss_import_types, empty_types, scss_branch_types,
|
|
scss_var_types, empty_types, empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_scss, NULL},
|
|
|
|
// CBM_LANG_YAML
|
|
[CBM_LANG_YAML] = {CBM_LANG_YAML, empty_types, empty_types, empty_types, yaml_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, yaml_var_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_yaml,
|
|
NULL},
|
|
|
|
// CBM_LANG_TOML
|
|
[CBM_LANG_TOML] = {CBM_LANG_TOML, empty_types, toml_class_types, empty_types, toml_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, toml_var_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_toml,
|
|
NULL},
|
|
|
|
// CBM_LANG_HCL
|
|
[CBM_LANG_HCL] = {CBM_LANG_HCL, empty_types, hcl_class_types, empty_types, hcl_module_types,
|
|
hcl_call_types, empty_types, empty_types, empty_types, hcl_var_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_hcl,
|
|
NULL},
|
|
|
|
// CBM_LANG_SQL
|
|
[CBM_LANG_SQL] = {CBM_LANG_SQL, sql_func_types, sql_class_types, sql_field_types,
|
|
sql_module_types, sql_call_types, empty_types, empty_types, sql_branch_types,
|
|
empty_types, empty_types, empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_sql, NULL},
|
|
|
|
// CBM_LANG_DOCKERFILE
|
|
[CBM_LANG_DOCKERFILE] = {CBM_LANG_DOCKERFILE, empty_types, empty_types, empty_types,
|
|
dockerfile_module_types, empty_types, empty_types, empty_types,
|
|
empty_types, dockerfile_var_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_dockerfile, NULL},
|
|
|
|
// CBM_LANG_CLOJURE
|
|
[CBM_LANG_CLOJURE] = {CBM_LANG_CLOJURE, clojure_func_types, empty_types, empty_types,
|
|
clojure_module_types, clojure_call_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_clojure, NULL},
|
|
|
|
// CBM_LANG_FSHARP
|
|
[CBM_LANG_FSHARP] = {CBM_LANG_FSHARP, fsharp_func_types, fsharp_class_types, empty_types,
|
|
fsharp_module_types, fsharp_call_types, fsharp_import_types, empty_types,
|
|
fsharp_branch_types, fsharp_var_types, fsharp_var_types, empty_types, NULL,
|
|
empty_types, fsharp_env_funcs, NULL, tree_sitter_fsharp, NULL},
|
|
|
|
// CBM_LANG_JULIA
|
|
[CBM_LANG_JULIA] = {CBM_LANG_JULIA, julia_func_types, julia_class_types, empty_types,
|
|
julia_module_types, julia_call_types, julia_import_types, empty_types,
|
|
julia_branch_types, julia_var_types, julia_assign_types, julia_throw_types,
|
|
NULL, empty_types, julia_env_funcs, NULL, tree_sitter_julia, NULL},
|
|
|
|
// CBM_LANG_VIMSCRIPT
|
|
[CBM_LANG_VIMSCRIPT] = {CBM_LANG_VIMSCRIPT, vim_func_types, empty_types, empty_types,
|
|
vim_module_types, vim_call_types, vim_import_types, empty_types,
|
|
vim_branch_types, vim_var_types, vim_var_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_vim, NULL},
|
|
|
|
// CBM_LANG_NIX
|
|
[CBM_LANG_NIX] = {CBM_LANG_NIX, nix_func_types, empty_types, empty_types, nix_module_types,
|
|
nix_call_types, empty_types, empty_types, nix_branch_types, nix_var_types,
|
|
nix_var_types, empty_types, NULL, empty_types, nix_env_funcs, NULL,
|
|
tree_sitter_nix, NULL},
|
|
|
|
// CBM_LANG_COMMONLISP
|
|
[CBM_LANG_COMMONLISP] = {CBM_LANG_COMMONLISP, commonlisp_func_types, empty_types, empty_types,
|
|
commonlisp_module_types, commonlisp_call_types,
|
|
commonlisp_import_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_commonlisp, NULL},
|
|
|
|
// CBM_LANG_ELM
|
|
[CBM_LANG_ELM] = {CBM_LANG_ELM, elm_func_types, elm_class_types, empty_types, elm_module_types,
|
|
elm_call_types, elm_import_types, empty_types, elm_branch_types, empty_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_elm,
|
|
NULL},
|
|
|
|
// CBM_LANG_FORTRAN
|
|
[CBM_LANG_FORTRAN] = {CBM_LANG_FORTRAN, fortran_func_types, fortran_class_types, empty_types,
|
|
fortran_module_types, fortran_call_types, fortran_import_types,
|
|
empty_types, fortran_branch_types, fortran_var_types,
|
|
fortran_assign_types, empty_types, NULL, empty_types, fortran_env_funcs,
|
|
NULL, tree_sitter_fortran, NULL},
|
|
|
|
// CBM_LANG_CUDA (reuses C++ node types)
|
|
[CBM_LANG_CUDA] = {CBM_LANG_CUDA, cpp_func_types, cpp_class_types, cpp_field_types,
|
|
cpp_module_types, cpp_call_types, cpp_import_types, cpp_import_types,
|
|
cpp_branch_types, cpp_var_types, cpp_assign_types, cpp_throw_types, NULL,
|
|
empty_types, cpp_env_funcs, NULL, tree_sitter_cuda, NULL},
|
|
|
|
// CBM_LANG_COBOL
|
|
[CBM_LANG_COBOL] = {CBM_LANG_COBOL, cobol_func_types, empty_types, empty_types,
|
|
cobol_module_types, cobol_call_types, cobol_import_types, empty_types,
|
|
cobol_branch_types, cobol_var_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_COBOL, NULL},
|
|
|
|
// CBM_LANG_VERILOG
|
|
[CBM_LANG_VERILOG] = {CBM_LANG_VERILOG, verilog_func_types, verilog_class_types, empty_types,
|
|
verilog_module_types, verilog_call_types, verilog_import_types,
|
|
empty_types, verilog_branch_types, verilog_var_types,
|
|
verilog_assign_types, empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_verilog, NULL},
|
|
|
|
// CBM_LANG_EMACSLISP
|
|
[CBM_LANG_EMACSLISP] = {CBM_LANG_EMACSLISP, elisp_func_types, empty_types, empty_types,
|
|
elisp_module_types, elisp_call_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_elisp, NULL},
|
|
|
|
// CBM_LANG_JSON
|
|
[CBM_LANG_JSON] = {CBM_LANG_JSON, empty_types, empty_types, empty_types, json_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, json_var_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_json,
|
|
NULL},
|
|
|
|
// CBM_LANG_XML
|
|
[CBM_LANG_XML] = {CBM_LANG_XML, empty_types, xml_class_types, empty_types, xml_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, NULL, empty_types, NULL, NULL, tree_sitter_xml, NULL},
|
|
|
|
// CBM_LANG_MARKDOWN
|
|
[CBM_LANG_MARKDOWN] = {CBM_LANG_MARKDOWN, empty_types, markdown_class_types, empty_types,
|
|
markdown_module_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_markdown, NULL},
|
|
|
|
// CBM_LANG_MAKEFILE
|
|
[CBM_LANG_MAKEFILE] = {CBM_LANG_MAKEFILE, makefile_func_types, empty_types, empty_types,
|
|
makefile_module_types, makefile_call_types, makefile_import_types,
|
|
empty_types, empty_types, makefile_var_types, empty_types, empty_types,
|
|
NULL, empty_types, NULL, NULL, tree_sitter_make, NULL},
|
|
|
|
// CBM_LANG_CMAKE
|
|
[CBM_LANG_CMAKE] = {CBM_LANG_CMAKE, cmake_func_types, empty_types, empty_types,
|
|
cmake_module_types, cmake_call_types, make_import_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL, empty_types, NULL,
|
|
NULL, tree_sitter_cmake, NULL},
|
|
|
|
// CBM_LANG_PROTOBUF
|
|
[CBM_LANG_PROTOBUF] = {CBM_LANG_PROTOBUF, protobuf_func_types, protobuf_class_types,
|
|
protobuf_field_types, protobuf_module_types, empty_types,
|
|
protobuf_import_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_proto, NULL},
|
|
|
|
// CBM_LANG_GRAPHQL
|
|
[CBM_LANG_GRAPHQL] = {CBM_LANG_GRAPHQL, empty_types, graphql_class_types, graphql_field_types,
|
|
graphql_module_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_graphql, NULL},
|
|
|
|
// CBM_LANG_VUE
|
|
[CBM_LANG_VUE] = {CBM_LANG_VUE, empty_types, empty_types, empty_types, vue_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, NULL, empty_types, NULL, NULL, tree_sitter_vue,
|
|
vue_embedded_imports},
|
|
|
|
// CBM_LANG_SVELTE
|
|
[CBM_LANG_SVELTE] = {CBM_LANG_SVELTE, empty_types, empty_types, empty_types,
|
|
svelte_module_types, empty_types, empty_types, empty_types,
|
|
svelte_branch_types, empty_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_svelte, svelte_embedded_imports},
|
|
|
|
// CBM_LANG_MESON
|
|
[CBM_LANG_MESON] = {CBM_LANG_MESON, meson_func_types, empty_types, empty_types,
|
|
meson_module_types, meson_call_types, empty_types, empty_types,
|
|
meson_branch_types, meson_var_types, meson_var_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_meson, NULL},
|
|
|
|
// CBM_LANG_GLSL (reuses C node types)
|
|
[CBM_LANG_GLSL] = {CBM_LANG_GLSL, c_func_types, c_class_types, c_field_types, c_module_types,
|
|
c_call_types, c_import_types, empty_types, c_branch_types, c_var_types,
|
|
c_assign_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_glsl,
|
|
NULL},
|
|
|
|
// CBM_LANG_INI
|
|
[CBM_LANG_INI] = {CBM_LANG_INI, empty_types, ini_class_types, empty_types, ini_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, ini_var_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_ini,
|
|
NULL},
|
|
|
|
// CBM_LANG_MATLAB
|
|
[CBM_LANG_MATLAB] = {CBM_LANG_MATLAB, matlab_func_types, matlab_class_types, empty_types,
|
|
matlab_module_types, matlab_call_types, empty_types, empty_types,
|
|
matlab_branch_types, matlab_var_types, matlab_var_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_matlab, NULL},
|
|
|
|
// CBM_LANG_LEAN
|
|
[CBM_LANG_LEAN] = {CBM_LANG_LEAN, lean_func_types, lean_class_types, empty_types,
|
|
lean_module_types, lean_call_types, lean_import_types, empty_types,
|
|
lean_branch_types, empty_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_lean, NULL},
|
|
|
|
// CBM_LANG_FORM
|
|
[CBM_LANG_FORM] = {CBM_LANG_FORM, form_func_types, empty_types, empty_types, form_module_types,
|
|
form_call_types, form_import_types, empty_types, form_branch_types,
|
|
form_var_types, form_assign_types, empty_types, NULL, empty_types, NULL,
|
|
NULL, tree_sitter_form, NULL},
|
|
|
|
// CBM_LANG_MAGMA
|
|
[CBM_LANG_MAGMA] = {CBM_LANG_MAGMA, magma_func_types, empty_types, empty_types,
|
|
magma_module_types, magma_call_types, magma_import_types, empty_types,
|
|
magma_branch_types, magma_var_types, magma_var_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_magma, NULL},
|
|
|
|
// CBM_LANG_WOLFRAM
|
|
[CBM_LANG_WOLFRAM] = {CBM_LANG_WOLFRAM, wolfram_func_types, empty_types, empty_types,
|
|
wolfram_module_types, wolfram_call_types, wolfram_import_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_wolfram, NULL},
|
|
|
|
// CBM_LANG_SOLIDITY
|
|
[CBM_LANG_SOLIDITY] = {CBM_LANG_SOLIDITY, solidity_func_types, solidity_class_types,
|
|
solidity_field_types, solidity_module_types, solidity_call_types,
|
|
solidity_import_types, empty_types, solidity_branch_types,
|
|
solidity_var_types, solidity_assign_types, solidity_throw_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_solidity, NULL},
|
|
|
|
// CBM_LANG_TYPST
|
|
[CBM_LANG_TYPST] = {CBM_LANG_TYPST, typst_func_types, empty_types, empty_types,
|
|
typst_module_types, typst_call_types, typst_import_types, empty_types,
|
|
typst_branch_types, typst_var_types, typst_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_typst, NULL},
|
|
|
|
// CBM_LANG_GDSCRIPT
|
|
[CBM_LANG_GDSCRIPT] = {CBM_LANG_GDSCRIPT, gdscript_func_types, gdscript_class_types,
|
|
gdscript_field_types, gdscript_module_types, gdscript_call_types,
|
|
gdscript_import_types, empty_types, gdscript_branch_types,
|
|
gdscript_var_types, gdscript_assign_types, empty_types, NULL,
|
|
gdscript_decorator_types, NULL, NULL, tree_sitter_gdscript, NULL},
|
|
|
|
// CBM_LANG_QML
|
|
[CBM_LANG_QML] =
|
|
{CBM_LANG_QML, ts_func_types, qml_class_types, qml_field_types, js_module_types,
|
|
js_call_types, qml_import_types, qml_import_types, js_branch_types, js_var_types,
|
|
(const char *[]){"assignment_expression", "augmented_assignment_expression", NULL},
|
|
js_throw_types, NULL, ts_decorator_types, NULL, NULL, tree_sitter_qmljs, NULL},
|
|
|
|
// CBM_LANG_CFSCRIPT
|
|
[CBM_LANG_CFSCRIPT] =
|
|
{CBM_LANG_CFSCRIPT, cfscript_func_types, empty_types, cfscript_field_types, js_module_types,
|
|
js_call_types, cfscript_import_types, cfscript_import_types, js_branch_types, js_var_types,
|
|
(const char *[]){"assignment_expression", "augmented_assignment_expression", NULL},
|
|
js_throw_types, NULL, empty_types, NULL, NULL, tree_sitter_cfscript, NULL},
|
|
|
|
// CBM_LANG_CFML
|
|
[CBM_LANG_CFML] = {CBM_LANG_CFML, cfml_func_types, empty_types, empty_types, cfml_module_types,
|
|
cfml_call_types, empty_types, empty_types, cfml_branch_types, empty_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_cfml,
|
|
cfml_embedded_imports},
|
|
|
|
// CBM_LANG_GLEAM
|
|
[CBM_LANG_GLEAM] = {CBM_LANG_GLEAM, gleam_func_types, gleam_class_types, gleam_field_types,
|
|
gleam_module_types, gleam_call_types, gleam_import_types, empty_types,
|
|
gleam_branch_types, gleam_var_types, gleam_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_gleam, NULL},
|
|
|
|
// CBM_LANG_POWERSHELL
|
|
[CBM_LANG_POWERSHELL] = {CBM_LANG_POWERSHELL, powershell_func_types, powershell_class_types,
|
|
empty_types, powershell_module_types, powershell_call_types,
|
|
powershell_import_types, empty_types, powershell_branch_types,
|
|
powershell_var_types, powershell_assign_types, powershell_throw_types,
|
|
NULL, empty_types, NULL, NULL, tree_sitter_powershell, NULL},
|
|
|
|
// CBM_LANG_PASCAL
|
|
[CBM_LANG_PASCAL] = {CBM_LANG_PASCAL, pascal_func_types, pascal_class_types, pascal_field_types,
|
|
pascal_module_types, pascal_call_types, pascal_import_types, empty_types,
|
|
pascal_branch_types, pascal_var_types, pascal_assign_types,
|
|
pascal_throw_types, NULL, empty_types, NULL, NULL, tree_sitter_pascal,
|
|
NULL},
|
|
|
|
// CBM_LANG_DLANG
|
|
[CBM_LANG_DLANG] = {CBM_LANG_DLANG, d_func_types, d_class_types, d_field_types, d_module_types,
|
|
d_call_types, d_import_types, empty_types, d_branch_types, d_var_types,
|
|
d_assign_types, d_throw_types, NULL, empty_types, NULL, NULL, tree_sitter_d,
|
|
NULL},
|
|
|
|
// CBM_LANG_SCHEME
|
|
[CBM_LANG_SCHEME] = {CBM_LANG_SCHEME, scheme_func_types, empty_types, empty_types,
|
|
scheme_module_types, scheme_call_types, empty_types, empty_types,
|
|
empty_types, scheme_var_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_scheme, NULL},
|
|
|
|
// CBM_LANG_CHIALISP — lisp-family shape (generic list/symbol nodes)
|
|
[CBM_LANG_CHIALISP] = {CBM_LANG_CHIALISP, chialisp_func_types, empty_types, empty_types,
|
|
chialisp_module_types, chialisp_call_types, empty_types, empty_types,
|
|
empty_types, chialisp_var_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_chialisp, NULL},
|
|
|
|
// CBM_LANG_FENNEL
|
|
[CBM_LANG_FENNEL] = {CBM_LANG_FENNEL, fennel_func_types, empty_types, empty_types,
|
|
fennel_module_types, fennel_call_types, empty_types, empty_types,
|
|
fennel_branch_types, fennel_var_types, fennel_assign_types, empty_types,
|
|
NULL, empty_types, NULL, NULL, tree_sitter_fennel, NULL},
|
|
|
|
// CBM_LANG_FISH
|
|
[CBM_LANG_FISH] = {CBM_LANG_FISH, fish_func_types, empty_types, empty_types, fish_module_types,
|
|
fish_call_types, empty_types, empty_types, fish_branch_types, fish_var_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_fish,
|
|
NULL},
|
|
|
|
// CBM_LANG_AWK
|
|
[CBM_LANG_AWK] = {CBM_LANG_AWK, awk_func_types, empty_types, empty_types, awk_module_types,
|
|
awk_call_types, empty_types, empty_types, awk_branch_types, awk_var_types,
|
|
awk_assign_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_awk,
|
|
NULL},
|
|
|
|
// CBM_LANG_ZSH
|
|
[CBM_LANG_ZSH] = {CBM_LANG_ZSH, zsh_func_types, empty_types, empty_types, zsh_module_types,
|
|
zsh_call_types, empty_types, empty_types, zsh_branch_types, zsh_var_types,
|
|
zsh_assign_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_zsh,
|
|
NULL},
|
|
|
|
// CBM_LANG_TCL
|
|
[CBM_LANG_TCL] = {CBM_LANG_TCL, tcl_func_types, tcl_class_types, empty_types, tcl_module_types,
|
|
tcl_call_types, empty_types, empty_types, tcl_branch_types, tcl_var_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_tcl,
|
|
NULL},
|
|
|
|
// CBM_LANG_ADA
|
|
[CBM_LANG_ADA] = {CBM_LANG_ADA, ada_func_types, ada_class_types, ada_field_types,
|
|
ada_module_types, ada_call_types, ada_import_types, empty_types,
|
|
ada_branch_types, ada_var_types, ada_assign_types, ada_throw_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_ada, NULL},
|
|
|
|
// CBM_LANG_AGDA
|
|
[CBM_LANG_AGDA] = {CBM_LANG_AGDA, agda_func_types, agda_class_types, empty_types,
|
|
agda_module_types, agda_call_types, agda_import_types, empty_types,
|
|
agda_branch_types, agda_var_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_agda, NULL},
|
|
|
|
// CBM_LANG_RACKET
|
|
[CBM_LANG_RACKET] = {CBM_LANG_RACKET, racket_func_types, racket_class_types, empty_types,
|
|
racket_module_types, racket_call_types, empty_types, empty_types,
|
|
empty_types, racket_var_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_racket, NULL},
|
|
|
|
// CBM_LANG_ODIN
|
|
[CBM_LANG_ODIN] = {CBM_LANG_ODIN, odin_func_types, odin_class_types, odin_field_types,
|
|
odin_module_types, odin_call_types, odin_import_types, empty_types,
|
|
odin_branch_types, odin_var_types, odin_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_odin, NULL},
|
|
|
|
// CBM_LANG_RESCRIPT
|
|
[CBM_LANG_RESCRIPT] = {CBM_LANG_RESCRIPT, rescript_func_types, rescript_class_types,
|
|
empty_types, rescript_module_types, rescript_call_types,
|
|
rescript_import_types, empty_types, rescript_branch_types,
|
|
rescript_var_types, rescript_assign_types, rescript_throw_types, NULL,
|
|
rescript_decorator_types, NULL, NULL, tree_sitter_rescript, NULL},
|
|
|
|
// CBM_LANG_PURESCRIPT
|
|
[CBM_LANG_PURESCRIPT] = {CBM_LANG_PURESCRIPT, purescript_func_types, purescript_class_types,
|
|
empty_types, purescript_module_types, purescript_call_types,
|
|
purescript_import_types, empty_types, purescript_branch_types,
|
|
purescript_var_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_purescript, NULL},
|
|
|
|
// CBM_LANG_NICKEL
|
|
[CBM_LANG_NICKEL] = {CBM_LANG_NICKEL, nickel_func_types, empty_types, empty_types,
|
|
nickel_module_types, nickel_call_types, nickel_import_types, empty_types,
|
|
nickel_branch_types, nickel_var_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_nickel, NULL},
|
|
|
|
// CBM_LANG_CRYSTAL
|
|
[CBM_LANG_CRYSTAL] = {CBM_LANG_CRYSTAL, crystal_func_types, crystal_class_types,
|
|
crystal_field_types, crystal_module_types, crystal_call_types,
|
|
crystal_import_types, empty_types, crystal_branch_types,
|
|
crystal_var_types, crystal_assign_types, empty_types, NULL,
|
|
crystal_decorator_types, NULL, NULL, tree_sitter_crystal, NULL},
|
|
|
|
// CBM_LANG_TEAL
|
|
[CBM_LANG_TEAL] = {CBM_LANG_TEAL, teal_func_types, teal_class_types, empty_types,
|
|
teal_module_types, teal_call_types, empty_types, empty_types,
|
|
teal_branch_types, teal_var_types, teal_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_teal, NULL},
|
|
|
|
// CBM_LANG_HARE
|
|
[CBM_LANG_HARE] = {CBM_LANG_HARE, hare_func_types, hare_class_types, empty_types,
|
|
hare_module_types, hare_call_types, hare_import_types, empty_types,
|
|
hare_branch_types, hare_var_types, hare_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_hare, NULL},
|
|
|
|
// CBM_LANG_PONY
|
|
[CBM_LANG_PONY] = {CBM_LANG_PONY, pony_func_types, pony_class_types, empty_types,
|
|
pony_module_types, pony_call_types, pony_import_types, empty_types,
|
|
pony_branch_types, pony_var_types, pony_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_pony, NULL},
|
|
|
|
// CBM_LANG_LUAU
|
|
[CBM_LANG_LUAU] = {CBM_LANG_LUAU, luau_func_types, luau_class_types, empty_types,
|
|
luau_module_types, luau_call_types, empty_types, empty_types,
|
|
luau_branch_types, luau_var_types, luau_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_luau, NULL},
|
|
|
|
// CBM_LANG_JANET
|
|
[CBM_LANG_JANET] = {CBM_LANG_JANET, empty_types, empty_types, empty_types, janet_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_janet_simple, NULL},
|
|
|
|
// CBM_LANG_SWAY
|
|
[CBM_LANG_SWAY] = {CBM_LANG_SWAY, sway_func_types, sway_class_types, empty_types,
|
|
sway_module_types, sway_call_types, sway_import_types, empty_types,
|
|
sway_branch_types, sway_var_types, sway_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_sway, NULL},
|
|
|
|
// CBM_LANG_NASM
|
|
[CBM_LANG_NASM] = {CBM_LANG_NASM, nasm_func_types, nasm_class_types, empty_types,
|
|
nasm_module_types, nasm_call_types, nasm_import_types, empty_types,
|
|
empty_types, nasm_var_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_nasm, NULL},
|
|
|
|
// CBM_LANG_ASSEMBLY
|
|
[CBM_LANG_ASSEMBLY] = {CBM_LANG_ASSEMBLY, assembly_func_types, empty_types, empty_types,
|
|
assembly_module_types, empty_types, empty_types, empty_types,
|
|
empty_types, assembly_var_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_asm, NULL},
|
|
|
|
// CBM_LANG_ASTRO
|
|
[CBM_LANG_ASTRO] = {CBM_LANG_ASTRO, empty_types, empty_types, empty_types, astro_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_astro,
|
|
astro_embedded_imports},
|
|
|
|
// CBM_LANG_BLADE
|
|
[CBM_LANG_BLADE] = {CBM_LANG_BLADE, empty_types, empty_types, empty_types, blade_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_blade,
|
|
NULL},
|
|
|
|
// CBM_LANG_JUST
|
|
[CBM_LANG_JUST] = {CBM_LANG_JUST, just_func_types, empty_types, empty_types, just_module_types,
|
|
just_call_types, just_import_types, empty_types, just_branch_types,
|
|
empty_types, just_assign_types, empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_just, NULL},
|
|
|
|
// CBM_LANG_GOTEMPLATE
|
|
[CBM_LANG_GOTEMPLATE] = {CBM_LANG_GOTEMPLATE, gotemplate_func_types, empty_types, empty_types,
|
|
gotemplate_module_types, gotemplate_call_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_gotmpl, NULL},
|
|
|
|
// CBM_LANG_TEMPL
|
|
[CBM_LANG_TEMPL] = {CBM_LANG_TEMPL, templ_func_types, templ_class_types, empty_types,
|
|
templ_module_types, templ_call_types, templ_import_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL, empty_types, NULL,
|
|
NULL, tree_sitter_templ, NULL},
|
|
|
|
// CBM_LANG_LIQUID
|
|
[CBM_LANG_LIQUID] = {CBM_LANG_LIQUID, empty_types, empty_types, empty_types,
|
|
liquid_module_types, empty_types, liquid_import_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_liquid, NULL},
|
|
|
|
// CBM_LANG_JINJA2
|
|
[CBM_LANG_JINJA2] = {CBM_LANG_JINJA2, empty_types, empty_types, empty_types,
|
|
jinja2_module_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_jinja2, NULL},
|
|
|
|
// CBM_LANG_PRISMA
|
|
[CBM_LANG_PRISMA] = {CBM_LANG_PRISMA, empty_types, prisma_class_types, prisma_field_types,
|
|
prisma_module_types, prisma_call_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_prisma, NULL},
|
|
|
|
// CBM_LANG_HYPRLANG
|
|
[CBM_LANG_HYPRLANG] = {CBM_LANG_HYPRLANG, empty_types, empty_types, empty_types,
|
|
hyprlang_module_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_hyprlang, NULL},
|
|
|
|
// CBM_LANG_DOTENV
|
|
[CBM_LANG_DOTENV] = {CBM_LANG_DOTENV, empty_types, empty_types, empty_types,
|
|
dotenv_module_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_dotenv, NULL},
|
|
|
|
// CBM_LANG_DIFF
|
|
[CBM_LANG_DIFF] = {CBM_LANG_DIFF, empty_types, empty_types, empty_types, diff_module_types,
|
|
diff_call_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_diff,
|
|
NULL},
|
|
|
|
// CBM_LANG_WGSL
|
|
[CBM_LANG_WGSL] = {CBM_LANG_WGSL, wgsl_func_types, wgsl_class_types, empty_types,
|
|
wgsl_module_types, wgsl_call_types, wgsl_import_types, empty_types,
|
|
wgsl_branch_types, wgsl_var_types, wgsl_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_wgsl, NULL},
|
|
|
|
// CBM_LANG_KDL
|
|
[CBM_LANG_KDL] = {CBM_LANG_KDL, empty_types, empty_types, empty_types, kdl_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, NULL, empty_types, NULL, NULL, tree_sitter_kdl, NULL},
|
|
|
|
// CBM_LANG_JSON5
|
|
[CBM_LANG_JSON5] = {CBM_LANG_JSON5, empty_types, empty_types, empty_types, json5_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_json5,
|
|
NULL},
|
|
|
|
// CBM_LANG_JSONNET
|
|
[CBM_LANG_JSONNET] = {CBM_LANG_JSONNET, jsonnet_func_types, empty_types, empty_types,
|
|
jsonnet_module_types, jsonnet_call_types, jsonnet_import_types,
|
|
empty_types, jsonnet_branch_types, jsonnet_var_types, empty_types,
|
|
empty_types, NULL, empty_types, NULL, NULL, tree_sitter_jsonnet, NULL},
|
|
|
|
// CBM_LANG_RON
|
|
[CBM_LANG_RON] = {CBM_LANG_RON, empty_types, empty_types, empty_types, ron_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, NULL, empty_types, NULL, NULL, tree_sitter_ron, NULL},
|
|
|
|
// CBM_LANG_THRIFT
|
|
[CBM_LANG_THRIFT] = {CBM_LANG_THRIFT, thrift_func_types, thrift_class_types, thrift_field_types,
|
|
thrift_module_types, empty_types, thrift_import_types, empty_types,
|
|
empty_types, thrift_var_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_thrift, NULL},
|
|
|
|
// CBM_LANG_CAPNP
|
|
[CBM_LANG_CAPNP] = {CBM_LANG_CAPNP, capnp_func_types, capnp_class_types, capnp_field_types,
|
|
capnp_module_types, empty_types, capnp_import_types, empty_types,
|
|
empty_types, capnp_var_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_capnp, NULL},
|
|
|
|
// CBM_LANG_PROPERTIES
|
|
[CBM_LANG_PROPERTIES] = {CBM_LANG_PROPERTIES, empty_types, empty_types, empty_types,
|
|
properties_module_types, empty_types, empty_types, empty_types,
|
|
empty_types, properties_var_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_properties, NULL},
|
|
|
|
// CBM_LANG_SSHCONFIG
|
|
[CBM_LANG_SSHCONFIG] = {CBM_LANG_SSHCONFIG, empty_types, empty_types, empty_types,
|
|
sshconfig_module_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_ssh_config, NULL},
|
|
|
|
// CBM_LANG_BIBTEX
|
|
[CBM_LANG_BIBTEX] = {CBM_LANG_BIBTEX, empty_types, empty_types, empty_types,
|
|
bibtex_module_types, bibtex_call_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_bibtex, NULL},
|
|
|
|
// CBM_LANG_STARLARK
|
|
[CBM_LANG_STARLARK] = {CBM_LANG_STARLARK, starlark_func_types, empty_types, empty_types,
|
|
starlark_module_types, starlark_call_types, starlark_import_types,
|
|
empty_types, starlark_branch_types, starlark_var_types,
|
|
starlark_assign_types, empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_starlark, NULL},
|
|
|
|
// CBM_LANG_BICEP
|
|
[CBM_LANG_BICEP] = {CBM_LANG_BICEP, bicep_func_types, bicep_class_types, empty_types,
|
|
bicep_module_types, bicep_call_types, bicep_import_types, empty_types,
|
|
empty_types, bicep_var_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_bicep, NULL},
|
|
|
|
// CBM_LANG_CSV
|
|
[CBM_LANG_CSV] = {CBM_LANG_CSV, empty_types, empty_types, empty_types, csv_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, NULL, empty_types, NULL, NULL, tree_sitter_csv, NULL},
|
|
|
|
// CBM_LANG_REQUIREMENTS
|
|
[CBM_LANG_REQUIREMENTS] = {CBM_LANG_REQUIREMENTS, empty_types, empty_types, empty_types,
|
|
requirements_module_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_requirements, NULL},
|
|
|
|
// CBM_LANG_HLSL
|
|
[CBM_LANG_HLSL] = {CBM_LANG_HLSL, hlsl_func_types, hlsl_class_types, empty_types,
|
|
hlsl_module_types, hlsl_call_types, hlsl_import_types, empty_types,
|
|
hlsl_branch_types, hlsl_var_types, hlsl_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_hlsl, NULL},
|
|
|
|
// CBM_LANG_VHDL
|
|
[CBM_LANG_VHDL] = {CBM_LANG_VHDL, vhdl_func_types, vhdl_class_types, empty_types,
|
|
vhdl_module_types, vhdl_call_types, vhdl_import_types, empty_types,
|
|
vhdl_branch_types, vhdl_var_types, vhdl_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_vhdl, NULL},
|
|
|
|
// CBM_LANG_SYSTEMVERILOG
|
|
[CBM_LANG_SYSTEMVERILOG] = {CBM_LANG_SYSTEMVERILOG, systemverilog_func_types,
|
|
systemverilog_class_types, empty_types, systemverilog_module_types,
|
|
systemverilog_call_types, systemverilog_import_types, empty_types,
|
|
systemverilog_branch_types, systemverilog_var_types, empty_types,
|
|
empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_systemverilog, NULL},
|
|
|
|
// CBM_LANG_DEVICETREE
|
|
[CBM_LANG_DEVICETREE] = {CBM_LANG_DEVICETREE, empty_types, empty_types, empty_types,
|
|
devicetree_module_types, devicetree_call_types,
|
|
devicetree_import_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_devicetree, NULL},
|
|
|
|
// CBM_LANG_LINKERSCRIPT
|
|
[CBM_LANG_LINKERSCRIPT] = {CBM_LANG_LINKERSCRIPT, empty_types, empty_types, empty_types,
|
|
linkerscript_module_types, linkerscript_call_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types,
|
|
NULL, empty_types, NULL, NULL, tree_sitter_linkerscript, NULL},
|
|
|
|
// CBM_LANG_GN
|
|
[CBM_LANG_GN] = {CBM_LANG_GN, empty_types, empty_types, empty_types, gn_module_types,
|
|
gn_call_types, gn_import_types, empty_types, gn_branch_types, empty_types,
|
|
gn_assign_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_gn,
|
|
NULL},
|
|
|
|
// CBM_LANG_KCONFIG
|
|
[CBM_LANG_KCONFIG] = {CBM_LANG_KCONFIG, empty_types, kconfig_class_types, empty_types,
|
|
kconfig_module_types, empty_types, kconfig_import_types, empty_types,
|
|
kconfig_branch_types, empty_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_kconfig, NULL},
|
|
|
|
// CBM_LANG_BITBAKE
|
|
[CBM_LANG_BITBAKE] = {CBM_LANG_BITBAKE, bitbake_func_types, empty_types, empty_types,
|
|
bitbake_module_types, bitbake_call_types, bitbake_import_types,
|
|
empty_types, empty_types, bitbake_var_types, empty_types, empty_types,
|
|
NULL, empty_types, NULL, NULL, tree_sitter_bitbake, NULL},
|
|
|
|
// CBM_LANG_SMALI
|
|
[CBM_LANG_SMALI] = {CBM_LANG_SMALI, smali_func_types, smali_class_types, smali_field_types,
|
|
smali_module_types, empty_types, smali_import_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL, empty_types, NULL,
|
|
NULL, tree_sitter_smali, NULL},
|
|
|
|
// CBM_LANG_TABLEGEN
|
|
[CBM_LANG_TABLEGEN] = {CBM_LANG_TABLEGEN, tablegen_func_types, tablegen_class_types,
|
|
empty_types, tablegen_module_types, empty_types, tablegen_import_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_tablegen, NULL},
|
|
|
|
// CBM_LANG_ISPC
|
|
[CBM_LANG_ISPC] = {CBM_LANG_ISPC, ispc_func_types, ispc_class_types, empty_types,
|
|
ispc_module_types, ispc_call_types, ispc_import_types, empty_types,
|
|
ispc_branch_types, ispc_var_types, ispc_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_ispc, NULL},
|
|
|
|
// CBM_LANG_CAIRO
|
|
[CBM_LANG_CAIRO] = {CBM_LANG_CAIRO, cairo_func_types, cairo_class_types, empty_types,
|
|
cairo_module_types, cairo_call_types, cairo_import_types, empty_types,
|
|
cairo_branch_types, cairo_var_types, cairo_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_cairo, NULL},
|
|
|
|
// CBM_LANG_MOVE
|
|
[CBM_LANG_MOVE] = {CBM_LANG_MOVE, move_func_types, empty_types, empty_types, move_module_types,
|
|
move_call_types, move_import_types, empty_types, move_branch_types,
|
|
move_var_types, move_assign_types, empty_types, NULL, empty_types, NULL,
|
|
NULL, tree_sitter_move, NULL},
|
|
|
|
// CBM_LANG_SQUIRREL
|
|
[CBM_LANG_SQUIRREL] = {CBM_LANG_SQUIRREL, squirrel_func_types, squirrel_class_types,
|
|
empty_types, squirrel_module_types, squirrel_call_types,
|
|
squirrel_import_types, empty_types, squirrel_branch_types,
|
|
squirrel_var_types, squirrel_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_squirrel, NULL},
|
|
|
|
// CBM_LANG_FUNC
|
|
[CBM_LANG_FUNC] = {CBM_LANG_FUNC, func_func_types, empty_types, empty_types, func_module_types,
|
|
func_call_types, func_import_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_func,
|
|
NULL},
|
|
|
|
// CBM_LANG_REGEX
|
|
[CBM_LANG_REGEX] = {CBM_LANG_REGEX, empty_types, empty_types, empty_types, regex_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_regex,
|
|
NULL},
|
|
|
|
// CBM_LANG_JSDOC
|
|
[CBM_LANG_JSDOC] = {CBM_LANG_JSDOC, empty_types, empty_types, empty_types, jsdoc_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_jsdoc,
|
|
NULL},
|
|
|
|
// CBM_LANG_RST
|
|
[CBM_LANG_RST] = {CBM_LANG_RST, empty_types, empty_types, empty_types, rst_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, NULL, empty_types, NULL, NULL, tree_sitter_rst, NULL},
|
|
|
|
// CBM_LANG_BEANCOUNT
|
|
[CBM_LANG_BEANCOUNT] = {CBM_LANG_BEANCOUNT, empty_types, empty_types, empty_types,
|
|
beancount_module_types, empty_types, beancount_import_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_beancount, NULL},
|
|
|
|
// CBM_LANG_MERMAID
|
|
[CBM_LANG_MERMAID] = {CBM_LANG_MERMAID, empty_types, empty_types, empty_types,
|
|
mermaid_module_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_mermaid, NULL},
|
|
|
|
// CBM_LANG_PUPPET
|
|
[CBM_LANG_PUPPET] = {CBM_LANG_PUPPET, puppet_func_types, puppet_class_types, empty_types,
|
|
puppet_module_types, puppet_call_types, puppet_import_types, empty_types,
|
|
puppet_branch_types, puppet_var_types, puppet_assign_types, empty_types,
|
|
NULL, empty_types, NULL, NULL, tree_sitter_puppet, NULL},
|
|
|
|
// CBM_LANG_PO
|
|
[CBM_LANG_PO] = {CBM_LANG_PO, empty_types, empty_types, empty_types, po_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, NULL, empty_types, NULL, NULL, tree_sitter_po, NULL},
|
|
|
|
// CBM_LANG_GITATTRIBUTES
|
|
[CBM_LANG_GITATTRIBUTES] = {CBM_LANG_GITATTRIBUTES, empty_types, empty_types, empty_types,
|
|
gitattributes_module_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_gitattributes, NULL},
|
|
|
|
// CBM_LANG_GITIGNORE
|
|
[CBM_LANG_GITIGNORE] = {CBM_LANG_GITIGNORE, empty_types, empty_types, empty_types,
|
|
gitignore_module_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_gitignore, NULL},
|
|
|
|
// CBM_LANG_SLANG
|
|
[CBM_LANG_SLANG] = {CBM_LANG_SLANG, slang_func_types, slang_class_types, empty_types,
|
|
slang_module_types, slang_call_types, slang_import_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL, empty_types, NULL,
|
|
NULL, tree_sitter_slang, NULL},
|
|
|
|
// CBM_LANG_LLVM_IR
|
|
[CBM_LANG_LLVM_IR] = {CBM_LANG_LLVM_IR, llvm_func_types, empty_types, empty_types,
|
|
llvm_module_types, llvm_call_types, empty_types, empty_types,
|
|
llvm_branch_types, llvm_var_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_llvm, NULL},
|
|
|
|
// CBM_LANG_SMITHY
|
|
[CBM_LANG_SMITHY] = {CBM_LANG_SMITHY, smithy_func_types, smithy_class_types, smithy_field_types,
|
|
smithy_module_types, empty_types, smithy_import_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL, empty_types,
|
|
NULL, NULL, tree_sitter_smithy, NULL},
|
|
|
|
// CBM_LANG_WIT
|
|
[CBM_LANG_WIT] = {CBM_LANG_WIT, wit_func_types, wit_class_types, wit_field_types,
|
|
wit_module_types, empty_types, wit_import_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_wit, NULL},
|
|
|
|
// CBM_LANG_TLAPLUS
|
|
[CBM_LANG_TLAPLUS] = {CBM_LANG_TLAPLUS, tlaplus_func_types, empty_types, empty_types,
|
|
tlaplus_module_types, tlaplus_call_types, tlaplus_import_types,
|
|
empty_types, tlaplus_branch_types, tlaplus_var_types, empty_types,
|
|
empty_types, NULL, empty_types, NULL, NULL, tree_sitter_tlaplus, NULL},
|
|
|
|
// CBM_LANG_PKL
|
|
[CBM_LANG_PKL] = {CBM_LANG_PKL, pkl_func_types, pkl_class_types, empty_types, pkl_module_types,
|
|
pkl_call_types, pkl_import_types, empty_types, pkl_branch_types,
|
|
pkl_var_types, empty_types, pkl_throw_types, NULL, pkl_decorator_types, NULL,
|
|
NULL, tree_sitter_pkl, NULL},
|
|
|
|
// CBM_LANG_GOMOD
|
|
[CBM_LANG_GOMOD] = {CBM_LANG_GOMOD, empty_types, empty_types, empty_types, gomod_module_types,
|
|
empty_types, gomod_import_types, empty_types, empty_types, gomod_var_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_gomod,
|
|
NULL},
|
|
|
|
// CBM_LANG_APEX
|
|
[CBM_LANG_APEX] = {CBM_LANG_APEX, apex_func_types, apex_class_types, apex_field_types,
|
|
apex_module_types, apex_call_types, apex_import_types, empty_types,
|
|
apex_branch_types, apex_var_types, apex_assign_types, apex_throw_types, NULL,
|
|
apex_decorator_types, NULL, NULL, tree_sitter_apex, NULL},
|
|
|
|
// CBM_LANG_SOQL
|
|
[CBM_LANG_SOQL] = {CBM_LANG_SOQL, empty_types, empty_types, empty_types, soql_module_types,
|
|
empty_types, soql_import_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_soql,
|
|
NULL},
|
|
|
|
// CBM_LANG_SOSL
|
|
[CBM_LANG_SOSL] = {CBM_LANG_SOSL, empty_types, empty_types, empty_types, sosl_module_types,
|
|
empty_types, sosl_import_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, NULL, empty_types, NULL, NULL, tree_sitter_sosl,
|
|
NULL},
|
|
|
|
// CBM_LANG_KUSTOMIZE — reuses YAML grammar; semantic extraction via cbm_extract_k8s()
|
|
[CBM_LANG_KUSTOMIZE] = {CBM_LANG_KUSTOMIZE, yaml_var_types, empty_types, empty_types,
|
|
yaml_module_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, NULL, empty_types, NULL, NULL,
|
|
tree_sitter_yaml, NULL},
|
|
|
|
// CBM_LANG_K8S — reuses YAML grammar; semantic extraction via cbm_extract_k8s()
|
|
[CBM_LANG_K8S] = {CBM_LANG_K8S, yaml_var_types, empty_types, empty_types, yaml_module_types,
|
|
empty_types, empty_types, empty_types, empty_types, empty_types, empty_types,
|
|
empty_types, NULL, empty_types, NULL, NULL, tree_sitter_yaml, NULL},
|
|
|
|
// CBM_LANG_PINE — Pine Script (TradingView). kvarenzn/tree-sitter-pine (ISC).
|
|
[CBM_LANG_PINE] = {CBM_LANG_PINE, pine_func_types, pine_class_types, empty_types,
|
|
pine_module_types, pine_call_types, empty_types, empty_types,
|
|
pine_branch_types, pine_var_types, pine_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_pine, NULL},
|
|
|
|
// CBM_LANG_MOJO
|
|
[CBM_LANG_MOJO] = {CBM_LANG_MOJO, mojo_func_types, mojo_class_types, empty_types,
|
|
mojo_module_types, mojo_call_types, mojo_import_types, mojo_import_types,
|
|
mojo_branch_types, mojo_var_types, mojo_assign_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_mojo, NULL},
|
|
|
|
// CBM_LANG_OBJECTSCRIPT_UDL — InterSystems ObjectScript class (.cls) UDL.
|
|
// intersystems/tree-sitter-objectscript.
|
|
[CBM_LANG_OBJECTSCRIPT_UDL] = {CBM_LANG_OBJECTSCRIPT_UDL, objectscript_udl_func_types,
|
|
objectscript_udl_class_types, objectscript_udl_field_types,
|
|
objectscript_udl_module_types, objectscript_udl_call_types,
|
|
empty_types, empty_types, objectscript_udl_branch_types,
|
|
empty_types, empty_types, empty_types, NULL, empty_types, NULL,
|
|
NULL, tree_sitter_objectscript_udl, NULL},
|
|
|
|
// CBM_LANG_OBJECTSCRIPT_ROUTINE — InterSystems ObjectScript routine (.mac/.int/.rtn/.inc).
|
|
[CBM_LANG_OBJECTSCRIPT_ROUTINE] = {CBM_LANG_OBJECTSCRIPT_ROUTINE,
|
|
objectscript_routine_func_types, empty_types, empty_types,
|
|
objectscript_routine_module_types,
|
|
objectscript_routine_call_types, empty_types, empty_types,
|
|
empty_types, empty_types, empty_types, empty_types, NULL,
|
|
empty_types, NULL, NULL, tree_sitter_objectscript_routine,
|
|
NULL},
|
|
|
|
// CBM_LANG_PDF — PDF documents. No grammar row: extraction reads the text
|
|
// layer itself (cbm_pdf_extract_document, doc_pdf.c) before any grammar is
|
|
// looked up, so this language never reaches cbm_lang_spec()/cbm_ts_language().
|
|
// Left as a zero spec.
|
|
|
|
// CBM_LANG_ASCIIDOC — AsciiDoc documents. No grammar row, as PDF: extraction
|
|
// reads the file itself (cbm_adoc_extract_document, doc_adoc.c). Zero spec.
|
|
|
|
// CBM_LANG_OBJECTSCRIPT_EXPORT — Studio Export XML. No grammar row: the
|
|
// pipeline transcodes Export XML to UDL (iris_export_xml.c) and re-extracts
|
|
// each class as CBM_LANG_OBJECTSCRIPT_UDL, so this language never reaches
|
|
// cbm_lang_spec()/cbm_ts_language() directly. Left as a zero spec.
|
|
|
|
// CBM_LANG_ARKTS
|
|
[CBM_LANG_ARKTS] = {CBM_LANG_ARKTS, ts_func_types, arkts_class_types, arkts_field_types,
|
|
js_module_types, js_call_types, js_import_types, js_import_types,
|
|
js_branch_types, js_var_types,
|
|
(const char *[]){"assignment_expression", "augmented_assignment_expression",
|
|
NULL},
|
|
js_throw_types, NULL, ts_decorator_types, NULL,
|
|
ts_env_members, tree_sitter_arkts, NULL},
|
|
// CBM_LANG_PLSQL — Oracle PL/SQL. AndreasMaierDe/tree-sitter-plsql (MIT).
|
|
[CBM_LANG_PLSQL] = {CBM_LANG_PLSQL, plsql_func_types, plsql_class_types, empty_types,
|
|
plsql_module_types, plsql_call_types, empty_types, empty_types,
|
|
plsql_branch_types, empty_types, plsql_assign_types, plsql_throw_types,
|
|
NULL, empty_types, NULL, NULL, tree_sitter_plsql, NULL},
|
|
|
|
};
|
|
|
|
_Static_assert(sizeof(lang_specs) / sizeof(lang_specs[0]) == CBM_LANG_COUNT,
|
|
"lang_specs array size must match CBM_LANG_COUNT");
|
|
|
|
/* Conditional-compilation blocks per grammar (the `*_in_field_declaration_list`
|
|
* / `*_in_top_level` forms are aliased to these names by the grammars). */
|
|
static const char *c_family_conditional_types[] = {
|
|
"preproc_if", "preproc_ifdef", "preproc_else", "preproc_elif", "preproc_elifdef", NULL};
|
|
|
|
const char **cbm_conditional_block_types(CBMLanguage lang) {
|
|
switch (lang) {
|
|
case CBM_LANG_C:
|
|
case CBM_LANG_CPP:
|
|
case CBM_LANG_CUDA:
|
|
case CBM_LANG_OBJC:
|
|
case CBM_LANG_CSHARP:
|
|
case CBM_LANG_GLSL:
|
|
case CBM_LANG_HLSL:
|
|
case CBM_LANG_ISPC:
|
|
case CBM_LANG_SLANG:
|
|
return c_family_conditional_types;
|
|
default:
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
const CBMLangSpec *cbm_lang_spec(CBMLanguage lang) {
|
|
if (lang < 0 || lang >= CBM_LANG_COUNT) {
|
|
return NULL;
|
|
}
|
|
const CBMLangSpec *spec = &lang_specs[lang];
|
|
if (spec->language != lang || !spec->function_node_types) {
|
|
return NULL;
|
|
}
|
|
return spec;
|
|
}
|
|
|
|
const TSLanguage *cbm_ts_language(CBMLanguage lang) {
|
|
const CBMLangSpec *spec = cbm_lang_spec(lang);
|
|
return spec && spec->ts_factory ? spec->ts_factory() : NULL;
|
|
}
|