aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/highlights.rs80
-rw-r--r--src/main.rs179
-rw-r--r--src/parsers.rs4273
3 files changed, 4532 insertions, 0 deletions
diff --git a/src/highlights.rs b/src/highlights.rs
new file mode 100644
index 0000000..62f6e3d
--- /dev/null
+++ b/src/highlights.rs
@@ -0,0 +1,80 @@
+pub static HIGHLIGHTS: &'static [&'static str] = &[
+ "variable",
+ "variable.builtin",
+ "variable.parameter",
+ "variable.parameter.builtin",
+ "variable.member",
+ "constant",
+ "constant.builtin",
+ "constant.macro",
+ "module",
+ "module.builtin",
+ "label",
+ "string",
+ "string.documentation",
+ "string.regexp",
+ "string.escape",
+ "string.special",
+ "string.special.symbol",
+ "string.special.url",
+ "string.special.path",
+ "character",
+ "character.special",
+ "boolean",
+ "number",
+ "number.float",
+ "type",
+ "type.builtin",
+ "type.definition",
+ "attribute",
+ "attribute.builtin",
+ "property",
+ "function",
+ "function.builtin",
+ "function.call",
+ "function.macro",
+ "function.method",
+ "function.method.call",
+ "constructor",
+ "constructor.lua",
+ "operator",
+ "keyword",
+ "keyword.coroutine",
+ "keyword.function",
+ "keyword.operator",
+ "keyword.import",
+ "keyword.type",
+ "keyword.modifier",
+ "keyword.repeat",
+ "keyword.return",
+ "keyword.debug",
+ "keyword.exception",
+ "keyword.conditional",
+ "keyword.conditional.ternary",
+ "keyword.directive",
+ "keyword.directive.define",
+ "punctuation",
+ "punctuation.special",
+ "comment",
+ "comment.documentation",
+ "comment.error",
+ "comment.warning",
+ "comment.todo",
+ "comment.note",
+ "markup.strong",
+ "markup.italic",
+ "markup.strikethrough",
+ "markup.underline",
+ "markup.heading",
+ "markup.link",
+ "markup.link.label",
+ "markup.link.url",
+ "diff.plus",
+ "diff.delta",
+ "diff.minus",
+ "tag",
+ "tag.builtin",
+ "tag.attribute",
+ "tag.delimeter",
+ "none",
+];
diff --git a/src/main.rs b/src/main.rs
new file mode 100644
index 0000000..d96cc46
--- /dev/null
+++ b/src/main.rs
@@ -0,0 +1,179 @@
+mod highlights;
+mod parsers;
+
+use core::str;
+use std::{
+ cell::RefCell,
+ collections::HashMap,
+ env::{
+ args,
+ current_dir,
+ },
+ fs::{
+ create_dir,
+ read,
+ },
+ process::Command,
+};
+
+use dirs::cache_dir;
+use highlights::HIGHLIGHTS;
+use libloading::Library;
+use parsers::{
+ ALIASES,
+ PARSERS,
+};
+use tree_sitter::Language;
+use tree_sitter_highlight::{
+ HighlightConfiguration, Highlighter, HtmlRenderer
+};
+use url::Url;
+
+fn get_config<'a>(
+ lang: &'a str,
+ configs: &'a RefCell<HashMap<&'a str, &'static HighlightConfiguration>>,
+) -> Option<&'static HighlightConfiguration> {
+ let lang = ALIASES.get(lang).unwrap_or(&lang);
+ configs.borrow_mut().entry(lang).or_insert_with(|| {
+ let install_info = PARSERS.get(lang).unwrap();
+ let mut cache_dir = cache_dir().unwrap();
+ cache_dir.push("yah");
+
+ let mut query_dir = current_dir().unwrap();
+ query_dir.push("nvim-treesitter");
+ query_dir.push("queries");
+ query_dir.push(lang);
+
+ let mut parsers_dir = current_dir().unwrap();
+ parsers_dir.push(".parsers");
+ if !parsers_dir.exists() {
+ create_dir(&parsers_dir).unwrap();
+ }
+ if !cache_dir.exists() {
+ create_dir(&cache_dir).unwrap();
+ }
+
+ let parser_path = parsers_dir.join(format!("{lang}.so"));
+ let repo_path = cache_dir.join(
+ Url::parse(install_info.url)
+ .unwrap()
+ .path_segments()
+ .unwrap()
+ .last()
+ .unwrap(),
+ );
+
+ if !parser_path.exists() {
+ if !repo_path.exists() {
+ Command::new("git")
+ .arg("clone")
+ .arg(install_info.url)
+ .current_dir(&cache_dir)
+ .spawn()
+ .unwrap()
+ .wait()
+ .unwrap();
+ }
+
+ if install_info.requires_generate_from_grammar {
+ if install_info.generate_requires_npm {
+ Command::new("npm")
+ .arg("install")
+ .current_dir(&repo_path)
+ .spawn()
+ .unwrap()
+ .wait()
+ .unwrap();
+ }
+
+ Command::new("tree-sitter")
+ .arg("generate")
+ .arg("--no-bindings")
+ .current_dir(&repo_path)
+ .spawn()
+ .unwrap()
+ .wait()
+ .unwrap();
+ }
+
+ Command::new("tree-sitter")
+ .arg("build")
+ .arg("-o")
+ .arg(&parser_path)
+ .arg(
+ install_info
+ .location
+ .map_or(repo_path.clone(), |location| repo_path.join(location)),
+ )
+ .spawn()
+ .unwrap()
+ .wait()
+ .unwrap();
+ }
+
+ let library = unsafe {
+ Library::new(parser_path)
+ .unwrap()
+ };
+ let parser = unsafe {
+ library.get::<unsafe extern "C" fn() -> Language>(format!("tree_sitter_{lang}").as_bytes())
+ .unwrap()
+ ()
+ };
+ std::mem::forget(library); // this causes the dylib to not be unloaded with dlclose after this
+ // scope is dropped, and thus extending its lifetime to static
+
+ let mut config = HighlightConfiguration::new(
+ parser,
+ *lang,
+ read(query_dir.join("highlights.scm"))
+ .map(|v| String::from_utf8(v).unwrap())
+ .unwrap_or(String::from(""))
+ .as_str(),
+ read(query_dir.join("injections.scm"))
+ .map(|v| String::from_utf8(v).unwrap())
+ .unwrap_or(String::from(""))
+ .as_str(),
+ read(query_dir.join("locals.scm"))
+ .map(|v| String::from_utf8(v).unwrap())
+ .unwrap_or(String::from(""))
+ .as_str(),
+ )
+ .unwrap();
+ config.configure(HIGHLIGHTS);
+ Box::leak(Box::new(config))
+ });
+ configs.borrow_mut().get(lang).map(|v| *v)
+}
+
+fn main() {
+ if let [_, lang, code] = args().collect::<Vec<String>>().as_slice() {
+ let mut highlighter = Highlighter::new();
+ let configs = RefCell::new(HashMap::new());
+
+ let config = get_config(lang, &configs).unwrap();
+
+ let events = highlighter
+ .highlight(&config, code.as_bytes(), None, |v| {
+ let lang = String::from(v).leak();
+ get_config(lang, &configs)
+ })
+ .unwrap();
+
+ let mut renderer = HtmlRenderer::new();
+ renderer.render(events, code.as_bytes(), &|highlight, output| {
+ output.extend(b"class=\"");
+ let mut parts = HIGHLIGHTS[highlight.0].split('.').peekable();
+ while let Some(part) = parts.next() {
+ output.extend(part.as_bytes());
+ if parts.peek().is_some() {
+ output.extend(b" ");
+ }
+ }
+ output.extend(b"\"");
+ }).unwrap();
+ print!("{}", String::from_utf8(renderer.html).unwrap())
+ } else {
+ panic!("Need <lang> <code> as arguments")
+ }
+}
diff --git a/src/parsers.rs b/src/parsers.rs
new file mode 100644
index 0000000..f8eef0e
--- /dev/null
+++ b/src/parsers.rs
@@ -0,0 +1,4273 @@
+use std::{
+ collections::HashMap,
+ sync::LazyLock,
+};
+
+pub struct Parser {
+ pub url: &'static str,
+ pub branch: Option<&'static str>,
+ pub revision: Option<&'static str>,
+ pub files: &'static [&'static str],
+ pub generate_requires_npm: bool,
+ pub requires_generate_from_grammar: bool,
+ pub location: Option<&'static str>,
+ pub use_makefile: bool,
+ pub cxx_standard: Option<&'static str>,
+}
+
+include!(concat!(env!("OUT_DIR"), "/_parsers.rs"));
+
+// pub static ALIASES: LazyLock<HashMap<&'static str, &'static str>> = LazyLock::new(|| {
+// HashMap::from([
+// ("automake", "make"),
+// ("javascriptreact", "javascript"),
+// ("ecma", "javascript"),
+// ("jsx", "javascript"),
+// ("gyp", "python"),
+// ("html_tags", "html"),
+// ("typescript.tsx", "tsx"),
+// ("terraform-vars", "terraform"),
+// ("html.handlebars", "glimmer"),
+// ("systemverilog", "verilog"),
+// ("dosini", "ini"),
+// ("confini", "ini"),
+// ("svg", "xml"),
+// ("xsd", "xml"),
+// ("xslt", "xml"),
+// ("expect", "tcl"),
+// ("mysql", "sql"),
+// ("sbt", "scala"),
+// ("neomuttrc", "muttrc"),
+// ("clientscript", "runescript"),
+// ("rs", "rust"),
+// ("ex", "elixir"),
+// ("js", "javascript"),
+// ("ts", "typescript"),
+// ("c-sharp", "csharp"),
+// ("hs", "haskell"),
+// ("py", "python"),
+// ("erl", "erlang"),
+// ("typ", "typst"),
+// ("pl", "perl"),
+// ("uxn", "uxntal"),
+// ])
+// });
+//
+// pub static PARSERS: LazyLock<HashMap<&'static str, Parser>> = LazyLock::new(|| {
+// HashMap::from([
+// (
+// "ada",
+// Parser {
+// url: "https://github.com/briot/tree-sitter-ada",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "agda",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-agda",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "angular",
+// Parser {
+// url: "https://github.com/dlvandenberg/tree-sitter-angular",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "apex",
+// Parser {
+// url: "https://github.com/aheber/tree-sitter-sfapex",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("apex"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "arduino",
+// Parser {
+// url: "https://github.com/ObserverOfTime/tree-sitter-arduino",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "asm",
+// Parser {
+// url: "https://github.com/RubixDev/tree-sitter-asm",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "astro",
+// Parser {
+// url: "https://github.com/virchau13/tree-sitter-astro",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "authzed",
+// Parser {
+// url: "https://github.com/mleonidas/tree-sitter-authzed",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "awk",
+// Parser {
+// url: "https://github.com/Beaglefoot/tree-sitter-awk",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "bash",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-bash",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "bass",
+// Parser {
+// url: "https://github.com/vito/tree-sitter-bass",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "beancount",
+// Parser {
+// url: "https://github.com/polarmutex/tree-sitter-beancount",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "bibtex",
+// Parser {
+// url: "https://github.com/latex-lsp/tree-sitter-bibtex",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "bicep",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-bicep",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "bitbake",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-bitbake",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "blade",
+// Parser {
+// url: "https://github.com/EmranMR/tree-sitter-blade",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "blueprint",
+// Parser {
+// url: "https://gitlab.com/gabmus/tree-sitter-blueprint.git",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "bp",
+// Parser {
+// url: "https://github.com/ambroisie/tree-sitter-bp",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "brightscript",
+// Parser {
+// url: "https://github.com/ajdelcimmuto/tree-sitter-brightscript",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "c",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-c",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "caddy",
+// Parser {
+// url: "https://github.com/opa-oz/tree-sitter-caddy",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "cairo",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-cairo",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "capnp",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-capnp",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "chatito",
+// Parser {
+// url: "https://github.com/ObserverOfTime/tree-sitter-chatito",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "circom",
+// Parser {
+// url: "https://github.com/Decurity/tree-sitter-circom",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "clojure",
+// Parser {
+// url: "https://github.com/sogaiu/tree-sitter-clojure",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "cmake",
+// Parser {
+// url: "https://github.com/uyha/tree-sitter-cmake",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "comment",
+// Parser {
+// url: "https://github.com/stsewd/tree-sitter-comment",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "commonlisp",
+// Parser {
+// url: "https://github.com/theHamsta/tree-sitter-commonlisp",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "cooklang",
+// Parser {
+// url: "https://github.com/addcninblue/tree-sitter-cooklang",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "corn",
+// Parser {
+// url: "https://github.com/jakestanger/tree-sitter-corn",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "cpon",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-cpon",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "cpp",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-cpp",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "css",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-css",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "csv",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-csv",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("csv"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "cuda",
+// Parser {
+// url: "https://github.com/theHamsta/tree-sitter-cuda",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "cue",
+// Parser {
+// url: "https://github.com/eonpatapon/tree-sitter-cue",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "cylc",
+// Parser {
+// url: "https://github.com/elliotfontaine/tree-sitter-cylc",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "d",
+// Parser {
+// url: "https://github.com/gdamore/tree-sitter-d",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "dart",
+// Parser {
+// url: "https://github.com/UserNobody14/tree-sitter-dart",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "desktop",
+// Parser {
+// url: "https://github.com/ValdezFOmar/tree-sitter-desktop",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "devicetree",
+// Parser {
+// url: "https://github.com/joelspadin/tree-sitter-devicetree",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "dhall",
+// Parser {
+// url: "https://github.com/jbellerb/tree-sitter-dhall",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "diff",
+// Parser {
+// url: "https://github.com/the-mikedavis/tree-sitter-diff",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "disassembly",
+// Parser {
+// url: "https://github.com/ColinKennedy/tree-sitter-disassembly",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "djot",
+// Parser {
+// url: "https://github.com/treeman/tree-sitter-djot",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "dockerfile",
+// Parser {
+// url: "https://github.com/camdencheek/tree-sitter-dockerfile",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "dot",
+// Parser {
+// url: "https://github.com/rydesun/tree-sitter-dot",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "doxygen",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-doxygen",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "dtd",
+// Parser {
+// url: "https://github.com/tree-sitter-grammars/tree-sitter-xml",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("dtd"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "earthfile",
+// Parser {
+// url: "https://github.com/glehmann/tree-sitter-earthfile",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "ebnf",
+// Parser {
+// url: "https://github.com/RubixDev/ebnf",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("crates/tree-sitter-ebnf"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "editorconfig",
+// Parser {
+// url: "https://github.com/ValdezFOmar/tree-sitter-editorconfig",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "eds",
+// Parser {
+// url: "https://github.com/uyha/tree-sitter-eds",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "eex",
+// Parser {
+// url: "https://github.com/connorlay/tree-sitter-eex",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "elixir",
+// Parser {
+// url: "https://github.com/elixir-lang/tree-sitter-elixir",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "elm",
+// Parser {
+// url: "https://github.com/elm-tooling/tree-sitter-elm",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "elsa",
+// Parser {
+// url: "https://github.com/glapa-grossklag/tree-sitter-elsa",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "elvish",
+// Parser {
+// url: "https://github.com/elves/tree-sitter-elvish",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "enforce",
+// Parser {
+// url: "https://github.com/simonvic/tree-sitter-enforce",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "erlang",
+// Parser {
+// url: "https://github.com/WhatsApp/tree-sitter-erlang",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "facility",
+// Parser {
+// url: "https://github.com/FacilityApi/tree-sitter-facility",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "faust",
+// Parser {
+// url: "https://github.com/khiner/tree-sitter-faust",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "fennel",
+// Parser {
+// url: "https://github.com/alexmozaidze/tree-sitter-fennel",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "fidl",
+// Parser {
+// url: "https://github.com/google/tree-sitter-fidl",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "firrtl",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-firrtl",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "fish",
+// Parser {
+// url: "https://github.com/ram02z/tree-sitter-fish",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "foam",
+// Parser {
+// url: "https://github.com/FoamScience/tree-sitter-foam",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "forth",
+// Parser {
+// url: "https://github.com/AlexanderBrevig/tree-sitter-forth",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "fortran",
+// Parser {
+// url: "https://github.com/stadelmanma/tree-sitter-fortran",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "fsh",
+// Parser {
+// url: "https://github.com/mgramigna/tree-sitter-fsh",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "fsharp",
+// Parser {
+// url: "https://github.com/ionide/tree-sitter-fsharp",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("fsharp"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "func",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-func",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "fusion",
+// Parser {
+// url: "https://gitlab.com/jirgn/tree-sitter-fusion.git",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gap",
+// Parser {
+// url: "https://github.com/gap-system/tree-sitter-gap",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gaptst",
+// Parser {
+// url: "https://github.com/gap-system/tree-sitter-gaptst",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gdscript",
+// Parser {
+// url: "https://github.com/PrestonKnopp/tree-sitter-gdscript",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gdshader",
+// Parser {
+// url: "https://github.com/GodOfAvacyn/tree-sitter-gdshader",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gitattributes",
+// Parser {
+// url: "https://github.com/ObserverOfTime/tree-sitter-gitattributes",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gitcommit",
+// Parser {
+// url: "https://github.com/gbprod/tree-sitter-gitcommit",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gitignore",
+// Parser {
+// url: "https://github.com/shunsambongi/tree-sitter-gitignore",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gleam",
+// Parser {
+// url: "https://github.com/gleam-lang/tree-sitter-gleam",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "glimmer",
+// Parser {
+// url: "https://github.com/ember-tooling/tree-sitter-glimmer",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "glsl",
+// Parser {
+// url: "https://github.com/theHamsta/tree-sitter-glsl",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gn",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-gn",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gnuplot",
+// Parser {
+// url: "https://github.com/dpezto/tree-sitter-gnuplot",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "go",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-go",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "goctl",
+// Parser {
+// url: "https://github.com/chaozwn/tree-sitter-goctl",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gomod",
+// Parser {
+// url: "https://github.com/camdencheek/tree-sitter-go-mod",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gosum",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-go-sum",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gowork",
+// Parser {
+// url: "https://github.com/omertuc/tree-sitter-go-work",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gotmpl",
+// Parser {
+// url: "https://github.com/ngalaiko/tree-sitter-go-template",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gpg",
+// Parser {
+// url: "https://github.com/ObserverOfTime/tree-sitter-gpg-config",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gren",
+// Parser {
+// url: "https://github.com/MaeBrooks/tree-sitter-gren",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "groovy",
+// Parser {
+// url: "https://github.com/murtaza64/tree-sitter-groovy",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "graphql",
+// Parser {
+// url: "https://github.com/bkegley/tree-sitter-graphql",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "gstlaunch",
+// Parser {
+// url: "https://github.com/theHamsta/tree-sitter-gstlaunch",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "hack",
+// Parser {
+// url: "https://github.com/slackhq/tree-sitter-hack",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "hare",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-hare",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "haskell",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-haskell",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "hcl",
+// Parser {
+// url: "https://github.com/MichaHoffmann/tree-sitter-hcl",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "heex",
+// Parser {
+// url: "https://github.com/connorlay/tree-sitter-heex",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "helm",
+// Parser {
+// url: "https://github.com/ngalaiko/tree-sitter-go-template",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("dialects/helm"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "hjson",
+// Parser {
+// url: "https://github.com/winston0410/tree-sitter-hjson",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "hlsl",
+// Parser {
+// url: "https://github.com/theHamsta/tree-sitter-hlsl",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "hocon",
+// Parser {
+// url: "https://github.com/antosha417/tree-sitter-hocon",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "hoon",
+// Parser {
+// url: "https://github.com/urbit-pilled/tree-sitter-hoon",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "html",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-html",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "htmldjango",
+// Parser {
+// url: "https://github.com/interdependence/tree-sitter-htmldjango",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "http",
+// Parser {
+// url: "https://github.com/rest-nvim/tree-sitter-http",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "hurl",
+// Parser {
+// url: "https://github.com/pfeiferj/tree-sitter-hurl",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "hyprlang",
+// Parser {
+// url: "https://github.com/luckasRanarison/tree-sitter-hyprlang",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "idl",
+// Parser {
+// url: "https://github.com/cathaysia/tree-sitter-idl",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "idris",
+// Parser {
+// url: "https://github.com/kayhide/tree-sitter-idris",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "ini",
+// Parser {
+// url: "https://github.com/justinmk/tree-sitter-ini",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "inko",
+// Parser {
+// url: "https://github.com/inko-lang/tree-sitter-inko",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "ipkg",
+// Parser {
+// url: "https://github.com/srghma/tree-sitter-ipkg",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "ispc",
+// Parser {
+// url: "https://github.com/fab4100/tree-sitter-ispc",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "java",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-java",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "javadoc",
+// Parser {
+// url: "https://github.com/rmuir/tree-sitter-javadoc",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "javascript",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-javascript",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "jinja",
+// Parser {
+// url: "https://github.com/cathaysia/tree-sitter-jinja",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("tree-sitter-jinja"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "jq",
+// Parser {
+// url: "https://github.com/flurie/tree-sitter-jq",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "jsdoc",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-jsdoc",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "json",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-json",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "json5",
+// Parser {
+// url: "https://github.com/Joakker/tree-sitter-json5",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "jsonc",
+// Parser {
+// url: "https://gitlab.com/WhyNotHugo/tree-sitter-jsonc.git",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "jsonnet",
+// Parser {
+// url: "https://github.com/sourcegraph/tree-sitter-jsonnet",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "julia",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-julia",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "just",
+// Parser {
+// url: "https://github.com/IndianBoy42/tree-sitter-just",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "kcl",
+// Parser {
+// url: "https://github.com/kcl-lang/tree-sitter-kcl",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "kconfig",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-kconfig",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "kdl",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-kdl",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "kotlin",
+// Parser {
+// url: "https://github.com/fwcd/tree-sitter-kotlin",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "koto",
+// Parser {
+// url: "https://github.com/koto-lang/tree-sitter-koto",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "kusto",
+// Parser {
+// url: "https://github.com/Willem-J-an/tree-sitter-kusto",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "lalrpop",
+// Parser {
+// url: "https://github.com/traxys/tree-sitter-lalrpop",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "latex",
+// Parser {
+// url: "https://github.com/latex-lsp/tree-sitter-latex",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: true,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "ledger",
+// Parser {
+// url: "https://github.com/cbarrete/tree-sitter-ledger",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "leo",
+// Parser {
+// url: "https://github.com/r001/tree-sitter-leo",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "llvm",
+// Parser {
+// url: "https://github.com/benwilliamgraham/tree-sitter-llvm",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "linkerscript",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-linkerscript",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "liquid",
+// Parser {
+// url: "https://github.com/hankthetank27/tree-sitter-liquid",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "liquidsoap",
+// Parser {
+// url: "https://github.com/savonet/tree-sitter-liquidsoap",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "lua",
+// Parser {
+// url: "https://github.com/MunifTanjim/tree-sitter-lua",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "luadoc",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-luadoc",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "luap",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-luap",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "luau",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-luau",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "hlsplaylist",
+// Parser {
+// url: "https://github.com/Freed-Wu/tree-sitter-hlsplaylist",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "m68k",
+// Parser {
+// url: "https://github.com/grahambates/tree-sitter-m68k",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "make",
+// Parser {
+// url: "https://github.com/alemuller/tree-sitter-make",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "markdown",
+// Parser {
+// url: "https://github.com/MDeiml/tree-sitter-markdown",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("tree-sitter-markdown"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "matlab",
+// Parser {
+// url: "https://github.com/acristoffers/tree-sitter-matlab",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "menhir",
+// Parser {
+// url: "https://github.com/Kerl13/tree-sitter-menhir",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "mermaid",
+// Parser {
+// url: "https://github.com/monaqa/tree-sitter-mermaid",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "meson",
+// Parser {
+// url: "https://github.com/Decodetalkers/tree-sitter-meson",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "mlir",
+// Parser {
+// url: "https://github.com/artagnon/tree-sitter-mlir",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: true,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "muttrc",
+// Parser {
+// url: "https://github.com/neomutt/tree-sitter-muttrc",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "nasm",
+// Parser {
+// url: "https://github.com/naclsn/tree-sitter-nasm",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "nginx",
+// Parser {
+// url: "https://github.com/opa-oz/tree-sitter-nginx",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "nickel",
+// Parser {
+// url: "https://github.com/nickel-lang/tree-sitter-nickel",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "nim",
+// Parser {
+// url: "https://github.com/alaviss/tree-sitter-nim",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "ninja",
+// Parser {
+// url: "https://github.com/alemuller/tree-sitter-ninja",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "nix",
+// Parser {
+// url: "https://github.com/cstrahan/tree-sitter-nix",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "norg",
+// Parser {
+// url: "https://github.com/nvim-neorg/tree-sitter-norg",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.cc"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: true,
+// cxx_standard: Some("c++14"),
+// },
+// ),
+// (
+// "nqc",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-nqc",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "nu",
+// Parser {
+// url: "https://github.com/nushell/tree-sitter-nu",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "objc",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-objc",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "objdump",
+// Parser {
+// url: "https://github.com/ColinKennedy/tree-sitter-objdump",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "ocaml",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-ocaml",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("grammars/ocaml"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "ocamllex",
+// Parser {
+// url: "https://github.com/atom-ocaml/tree-sitter-ocamllex",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: true,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "odin",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-odin",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "pascal",
+// Parser {
+// url: "https://github.com/Isopod/tree-sitter-pascal",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "passwd",
+// Parser {
+// url: "https://github.com/ath3/tree-sitter-passwd",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "pem",
+// Parser {
+// url: "https://github.com/ObserverOfTime/tree-sitter-pem",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "perl",
+// Parser {
+// url: "https://github.com/tree-sitter-perl/tree-sitter-perl",
+// branch: Some("release"),
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "php",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-php",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("php"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "phpdoc",
+// Parser {
+// url: "https://github.com/claytonrcarter/tree-sitter-phpdoc",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "pioasm",
+// Parser {
+// url: "https://github.com/leo60228/tree-sitter-pioasm",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "po",
+// Parser {
+// url: "https://github.com/erasin/tree-sitter-po",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "pod",
+// Parser {
+// url: "https://github.com/tree-sitter-perl/tree-sitter-pod",
+// branch: Some("release"),
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "pony",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-pony",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "powershell",
+// Parser {
+// url: "https://github.com/airbus-cert/tree-sitter-powershell",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "printf",
+// Parser {
+// url: "https://github.com/ObserverOfTime/tree-sitter-printf",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "prisma",
+// Parser {
+// url: "https://github.com/victorhqc/tree-sitter-prisma",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "problog",
+// Parser {
+// url: "https://github.com/foxyseta/tree-sitter-prolog",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("grammars/problog"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "prolog",
+// Parser {
+// url: "https://github.com/foxyseta/tree-sitter-prolog",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("grammars/prolog"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "promql",
+// Parser {
+// url: "https://github.com/MichaHoffmann/tree-sitter-promql",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "properties",
+// Parser {
+// url: "https://github.com/tree-sitter-grammars/tree-sitter-properties",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "proto",
+// Parser {
+// url: "https://github.com/treywood/tree-sitter-proto",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "prql",
+// Parser {
+// url: "https://github.com/PRQL/tree-sitter-prql",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "psv",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-csv",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("psv"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "pug",
+// Parser {
+// url: "https://github.com/zealot128/tree-sitter-pug",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "puppet",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-puppet",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "purescript",
+// Parser {
+// url: "https://github.com/postsolar/tree-sitter-purescript",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "pymanifest",
+// Parser {
+// url: "https://github.com/ObserverOfTime/tree-sitter-pymanifest",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "python",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-python",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "ql",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-ql",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "qmldir",
+// Parser {
+// url: "https://github.com/Decodetalkers/tree-sitter-qmldir",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "qmljs",
+// Parser {
+// url: "https://github.com/yuja/tree-sitter-qmljs",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "query",
+// Parser {
+// url: "https://github.com/nvim-treesitter/tree-sitter-query",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "r",
+// Parser {
+// url: "https://github.com/r-lib/tree-sitter-r",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "racket",
+// Parser {
+// url: "https://github.com/6cdh/tree-sitter-racket",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "ralph",
+// Parser {
+// url: "https://github.com/alephium/tree-sitter-ralph",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "rasi",
+// Parser {
+// url: "https://github.com/Fymyte/tree-sitter-rasi",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "razor",
+// Parser {
+// url: "https://github.com/tris203/tree-sitter-razor",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "rbs",
+// Parser {
+// url: "https://github.com/joker1007/tree-sitter-rbs",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "re2c",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-re2c",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "readline",
+// Parser {
+// url: "https://github.com/ribru17/tree-sitter-readline",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "regex",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-regex",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "rego",
+// Parser {
+// url: "https://github.com/FallenAngel97/tree-sitter-rego",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "requirements",
+// Parser {
+// url: "https://github.com/ObserverOfTime/tree-sitter-requirements",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "rescript",
+// Parser {
+// url: "https://github.com/rescript-lang/tree-sitter-rescript",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "rnoweb",
+// Parser {
+// url: "https://github.com/bamonroe/tree-sitter-rnoweb",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "robot",
+// Parser {
+// url: "https://github.com/Hubro/tree-sitter-robot",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "robots",
+// Parser {
+// url: "https://github.com/opa-oz/tree-sitter-robots-txt",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "roc",
+// Parser {
+// url: "https://github.com/faldor20/tree-sitter-roc",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "ron",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-ron",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "rst",
+// Parser {
+// url: "https://github.com/stsewd/tree-sitter-rst",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "ruby",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-ruby",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "runescript",
+// Parser {
+// url: "https://github.com/2004Scape/tree-sitter-runescript",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "rust",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-rust",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "scala",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-scala",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "scfg",
+// Parser {
+// url: "https://github.com/rockorager/tree-sitter-scfg",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: true,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "scheme",
+// Parser {
+// url: "https://github.com/6cdh/tree-sitter-scheme",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "scss",
+// Parser {
+// url: "https://github.com/serenadeai/tree-sitter-scss",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "sflog",
+// Parser {
+// url: "https://github.com/aheber/tree-sitter-sfapex",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("sflog"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "slang",
+// Parser {
+// url: "https://github.com/theHamsta/tree-sitter-slang",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "slim",
+// Parser {
+// url: "https://github.com/theoo/tree-sitter-slim",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "slint",
+// Parser {
+// url: "https://github.com/slint-ui/tree-sitter-slint",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "smali",
+// Parser {
+// url: "https://github.com/tree-sitter-grammars/tree-sitter-smali",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "snakemake",
+// Parser {
+// url: "https://github.com/osthomas/tree-sitter-snakemake",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "smithy",
+// Parser {
+// url: "https://github.com/indoorvivants/tree-sitter-smithy",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "solidity",
+// Parser {
+// url: "https://github.com/JoranHonig/tree-sitter-solidity",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "soql",
+// Parser {
+// url: "https://github.com/aheber/tree-sitter-sfapex",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("soql"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "sosl",
+// Parser {
+// url: "https://github.com/aheber/tree-sitter-sfapex",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("sosl"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "sourcepawn",
+// Parser {
+// url: "https://github.com/nilshelmig/tree-sitter-sourcepawn",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "sparql",
+// Parser {
+// url: "https://github.com/GordianDziwis/tree-sitter-sparql",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "sql",
+// Parser {
+// url: "https://github.com/derekstride/tree-sitter-sql",
+// branch: Some("gh-pages"),
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "squirrel",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-squirrel",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "starlark",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-starlark",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "strace",
+// Parser {
+// url: "https://github.com/sigmaSd/tree-sitter-strace",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "styled",
+// Parser {
+// url: "https://github.com/mskelton/tree-sitter-styled",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "supercollider",
+// Parser {
+// url: "https://github.com/madskjeldgaard/tree-sitter-supercollider",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "superhtml",
+// Parser {
+// url: "https://github.com/kristoff-it/superhtml",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("tree-sitter-superhtml"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "surface",
+// Parser {
+// url: "https://github.com/connorlay/tree-sitter-surface",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "svelte",
+// Parser {
+// url: "https://github.com/tree-sitter-grammars/tree-sitter-svelte",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "sway",
+// Parser {
+// url: "https://github.com/FuelLabs/tree-sitter-sway.git",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "swift",
+// Parser {
+// url: "https://github.com/alex-pinkus/tree-sitter-swift",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: true,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "sxhkdrc",
+// Parser {
+// url: "https://github.com/RaafatTurki/tree-sitter-sxhkdrc",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "systemtap",
+// Parser {
+// url: "https://github.com/ok-ryoko/tree-sitter-systemtap",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "t32",
+// Parser {
+// url: "https://gitlab.com/xasc/tree-sitter-t32.git",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "tablegen",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-tablegen",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "tact",
+// Parser {
+// url: "https://github.com/tact-lang/tree-sitter-tact",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "teal",
+// Parser {
+// url: "https://github.com/euclidianAce/tree-sitter-teal",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: true,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "tcl",
+// Parser {
+// url: "https://github.com/tree-sitter-grammars/tree-sitter-tcl",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "tera",
+// Parser {
+// url: "https://github.com/uncenter/tree-sitter-tera",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "terraform",
+// Parser {
+// url: "https://github.com/MichaHoffmann/tree-sitter-hcl",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("dialects/terraform"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "textproto",
+// Parser {
+// url: "https://github.com/PorterAtGoogle/tree-sitter-textproto",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "thrift",
+// Parser {
+// url: "https://github.com/duskmoon314/tree-sitter-thrift",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "tiger",
+// Parser {
+// url: "https://github.com/ambroisie/tree-sitter-tiger",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "tlaplus",
+// Parser {
+// url: "https://github.com/tlaplus-community/tree-sitter-tlaplus",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "tmux",
+// Parser {
+// url: "https://github.com/Freed-Wu/tree-sitter-tmux",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "todotxt",
+// Parser {
+// url: "https://github.com/arnarg/tree-sitter-todotxt",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "toml",
+// Parser {
+// url: "https://github.com/tree-sitter-grammars/tree-sitter-toml",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "tsv",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-csv",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("tsv"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "tsx",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-typescript",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: Some("tsx"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "turtle",
+// Parser {
+// url: "https://github.com/GordianDziwis/tree-sitter-turtle",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "twig",
+// Parser {
+// url: "https://github.com/gbprod/tree-sitter-twig",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "typescript",
+// Parser {
+// url: "https://github.com/tree-sitter/tree-sitter-typescript",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: true,
+// requires_generate_from_grammar: false,
+// location: Some("typescript"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "typespec",
+// Parser {
+// url: "https://github.com/happenslol/tree-sitter-typespec",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "typoscript",
+// Parser {
+// url: "https://github.com/Teddytrombone/tree-sitter-typoscript",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "typst",
+// Parser {
+// url: "https://github.com/uben0/tree-sitter-typst",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "udev",
+// Parser {
+// url: "https://github.com/ObserverOfTime/tree-sitter-udev",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "ungrammar",
+// Parser {
+// url: "https://github.com/Philipp-M/tree-sitter-ungrammar",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "unison",
+// Parser {
+// url: "https://github.com/kylegoetz/tree-sitter-unison",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: true,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "usd",
+// Parser {
+// url: "https://github.com/ColinKennedy/tree-sitter-usd",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "uxntal",
+// Parser {
+// url: "https://github.com/amaanq/tree-sitter-uxntal",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "v",
+// Parser {
+// url: "https://github.com/vlang/v-analyzer",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("tree_sitter_v"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "vala",
+// Parser {
+// url: "https://github.com/vala-lang/tree-sitter-vala",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "vento",
+// Parser {
+// url: "https://github.com/ventojs/tree-sitter-vento",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "verilog",
+// Parser {
+// url: "https://github.com/gmlarumbe/tree-sitter-systemverilog",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "vhdl",
+// Parser {
+// url: "https://github.com/jpt13653903/tree-sitter-vhdl",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "vhs",
+// Parser {
+// url: "https://github.com/charmbracelet/tree-sitter-vhs",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "vim",
+// Parser {
+// url: "https://github.com/neovim/tree-sitter-vim",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "vimdoc",
+// Parser {
+// url: "https://github.com/neovim/tree-sitter-vimdoc",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "vrl",
+// Parser {
+// url: "https://github.com/belltoy/tree-sitter-vrl",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "vue",
+// Parser {
+// url: "https://github.com/tree-sitter-grammars/tree-sitter-vue",
+// branch: Some("main"),
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "wgsl",
+// Parser {
+// url: "https://github.com/szebniok/tree-sitter-wgsl",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "wing",
+// Parser {
+// url: "https://github.com/winglang/tree-sitter-wing",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "wit",
+// Parser {
+// url: "https://github.com/liamwh/tree-sitter-wit",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "xcompose",
+// Parser {
+// url: "https://github.com/ObserverOfTime/tree-sitter-xcompose",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "xml",
+// Parser {
+// url: "https://github.com/tree-sitter-grammars/tree-sitter-xml",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("xml"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "xresources",
+// Parser {
+// url: "https://github.com/ValdezFOmar/tree-sitter-xresources",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "yaml",
+// Parser {
+// url: "https://github.com/tree-sitter-grammars/tree-sitter-yaml",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "yang",
+// Parser {
+// url: "https://github.com/Hubro/tree-sitter-yang",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "yuck",
+// Parser {
+// url: "https://github.com/Philipp-M/tree-sitter-yuck",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "zathurarc",
+// Parser {
+// url: "https://github.com/Freed-Wu/tree-sitter-zathurarc",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "zig",
+// Parser {
+// url: "https://github.com/tree-sitter-grammars/tree-sitter-zig",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "ziggy",
+// Parser {
+// url: "https://github.com/kristoff-it/ziggy",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: Some("tree-sitter-ziggy"),
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// (
+// "templ",
+// Parser {
+// url: "https://github.com/vrischmann/tree-sitter-templ",
+// branch: None,
+// revision: None,
+// files: &["src/parser.c", "src/scanner.c"],
+// generate_requires_npm: false,
+// requires_generate_from_grammar: false,
+// location: None,
+// use_makefile: false,
+// cxx_standard: None,
+// },
+// ),
+// ])
+// });