aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordelta <darkussdelta@gmail.com>2025-08-26 00:57:02 +0200
committerdelta <darkussdelta@gmail.com>2025-08-26 00:58:09 +0200
commitcfd14e880023752bffe9a01d1781b54ceefa32ec (patch)
treecaf8bf8ef7cb966c9d06776bb75d02d11fe7eda7
initial commit
-rw-r--r--.gitignore1
-rw-r--r--.gitmodules3
-rw-r--r--Cargo.lock689
-rw-r--r--Cargo.toml11
-rw-r--r--README.md1
-rw-r--r--build.rs21
-rw-r--r--generate_parsers.lua59
m---------nvim-treesitter0
-rw-r--r--rustfmt.toml4
-rw-r--r--src/highlights.rs80
-rw-r--r--src/main.rs179
-rw-r--r--src/parsers.rs4273
12 files changed, 5321 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ea8c4bf
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/target
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..87b056d
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "nvim-treesitter"]
+ path = nvim-treesitter
+ url = https://github.com/nvim-treesitter/nvim-treesitter
diff --git a/Cargo.lock b/Cargo.lock
new file mode 100644
index 0000000..7a75cc9
--- /dev/null
+++ b/Cargo.lock
@@ -0,0 +1,689 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 4
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "bitflags"
+version = "2.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a65b545ab31d687cff52899d4890855fec459eb6afe0da6417b8a18da87aa29"
+
+[[package]]
+name = "cc"
+version = "1.2.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ee0f8803222ba5a7e2777dd72ca451868909b1ac410621b676adf07280e9b5f"
+dependencies = [
+ "shlex",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9"
+
+[[package]]
+name = "dirs"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
+dependencies = [
+ "libc",
+ "option-ext",
+ "redox_users",
+ "windows-sys",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.15.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
+
+[[package]]
+name = "icu_collections"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47"
+dependencies = [
+ "displaydoc",
+ "potential_utf",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locale_core"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_normalizer_data",
+ "icu_properties",
+ "icu_provider",
+ "smallvec",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer_data"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3"
+
+[[package]]
+name = "icu_properties"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_locale_core",
+ "icu_properties_data",
+ "icu_provider",
+ "potential_utf",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_properties_data"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632"
+
+[[package]]
+name = "icu_provider"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af"
+dependencies = [
+ "displaydoc",
+ "icu_locale_core",
+ "stable_deref_trait",
+ "tinystr",
+ "writeable",
+ "yoke",
+ "zerofrom",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "idna"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
+dependencies = [
+ "idna_adapter",
+ "smallvec",
+ "utf8_iter",
+]
+
+[[package]]
+name = "idna_adapter"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
+dependencies = [
+ "icu_normalizer",
+ "icu_properties",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
+
+[[package]]
+name = "libc"
+version = "0.2.175"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543"
+
+[[package]]
+name = "libloading"
+version = "0.8.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667"
+dependencies = [
+ "cfg-if",
+ "windows-targets",
+]
+
+[[package]]
+name = "libredox"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3"
+dependencies = [
+ "bitflags",
+ "libc",
+]
+
+[[package]]
+name = "litemap"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
+
+[[package]]
+name = "memchr"
+version = "2.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
+
+[[package]]
+name = "option-ext"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
+
+[[package]]
+name = "potential_utf"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585"
+dependencies = [
+ "zerovec",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.101"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
+dependencies = [
+ "getrandom",
+ "libredox",
+ "thiserror",
+]
+
+[[package]]
+name = "regex"
+version = "1.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+
+[[package]]
+name = "ryu"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
+
+[[package]]
+name = "serde"
+version = "1.0.219"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.219"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.143"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a"
+dependencies = [
+ "indexmap",
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "smallvec"
+version = "1.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "streaming-iterator"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520"
+
+[[package]]
+name = "syn"
+version = "2.0.106"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "thiserror"
+version = "2.0.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "2.0.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tinystr"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b"
+dependencies = [
+ "displaydoc",
+ "zerovec",
+]
+
+[[package]]
+name = "tree-sitter"
+version = "0.25.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d7b8994f367f16e6fa14b5aebbcb350de5d7cbea82dc5b00ae997dd71680dd2"
+dependencies = [
+ "cc",
+ "regex",
+ "regex-syntax",
+ "serde_json",
+ "streaming-iterator",
+ "tree-sitter-language",
+]
+
+[[package]]
+name = "tree-sitter-highlight"
+version = "0.25.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7bf7a0dfbd45d88e75c89da0d13fc46f477cc20ce15617b54ebf73978eb66aec"
+dependencies = [
+ "regex",
+ "streaming-iterator",
+ "thiserror",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-language"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4013970217383f67b18aef68f6fb2e8d409bc5755227092d32efb0422ba24b8"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+
+[[package]]
+name = "url"
+version = "2.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+ "serde",
+]
+
+[[package]]
+name = "utf8_iter"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+
+[[package]]
+name = "wasi"
+version = "0.11.1+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
+
+[[package]]
+name = "windows-link"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
+
+[[package]]
+name = "windows-sys"
+version = "0.60.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.53.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91"
+dependencies = [
+ "windows-link",
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
+
+[[package]]
+name = "writeable"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
+
+[[package]]
+name = "yah"
+version = "0.1.0"
+dependencies = [
+ "dirs",
+ "libloading",
+ "tree-sitter",
+ "tree-sitter-highlight",
+ "url",
+]
+
+[[package]]
+name = "yoke"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"
+dependencies = [
+ "serde",
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerotrie"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b"
+dependencies = [
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
diff --git a/Cargo.toml b/Cargo.toml
new file mode 100644
index 0000000..25da5ac
--- /dev/null
+++ b/Cargo.toml
@@ -0,0 +1,11 @@
+[package]
+name = "yah"
+version = "0.1.0"
+edition = "2024"
+
+[dependencies]
+dirs = "6.0.0"
+libloading = "0.8.8"
+tree-sitter = "0.25.8"
+tree-sitter-highlight = "0.25.8"
+url = "2.5.7"
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..b32bcd6
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+This is naught but a simple tool to highlight code, enjoy
diff --git a/build.rs b/build.rs
new file mode 100644
index 0000000..fbb4ade
--- /dev/null
+++ b/build.rs
@@ -0,0 +1,21 @@
+use std::{
+ env::var, fs::{read, write}, io::Write, path::{Path, PathBuf}, process::{
+ Command,
+ Stdio,
+ }
+};
+
+fn main() {
+ println!("test");
+ println!("cargo::rerun-if-changed=nvim-treesitter/lua/nvim-treesitter/parsers.lua");
+ println!("cargo::rerun-if-changed=generate_parsers.lua");
+ let mut child = Command::new("lua").arg("generate_parsers.lua").stdin(Stdio::piped()).stdout(Stdio::piped()).spawn().expect("Failed to spawn process");
+
+ let mut stdin = child.stdin.take().expect("Failed to open stdin");
+ std::thread::spawn(move || {
+ stdin.write_all(read(Path::new("nvim-treesitter/lua/nvim-treesitter/parsers.lua")).expect("Failed to create parsers path").as_ref()).expect("Failed to write to stdin");
+ }).join().unwrap();
+
+ let output = child.wait_with_output().expect("Failed to read stdout");
+ write(PathBuf::from(format!("{}/_parsers.rs", var("OUT_DIR").unwrap())), output.stdout).unwrap();
+}
diff --git a/generate_parsers.lua b/generate_parsers.lua
new file mode 100644
index 0000000..816358c
--- /dev/null
+++ b/generate_parsers.lua
@@ -0,0 +1,59 @@
+---@type string
+local parsers_content = io.read("*a")
+---@type string
+local aliases = parsers_content:match("for ft, lang in pairs {(.-)} do")
+
+print([[
+pub static ALIASES: LazyLock<HashMap<&'static str, &'static str>> = LazyLock::new(|| {
+ HashMap::from([]])
+for k,v in aliases:gmatch("%[?\"?([^%s]-)\"?%]? = \"(.-)\",") do
+ print([[ ("]] .. k .. [[", "]] .. v .. [["),]])
+end
+print(" ])")
+print([[});
+]])
+
+local function crush(t1, t2)
+ for k,v in pairs(t2) do t1[k] = v end
+end
+
+local function quote(v)
+ return type(v) == "string" and [["]] .. v .. [["]] or v
+end
+
+local function opt(v)
+ return type(v) == "nil" and "None" or "Some(" .. quote(v) .. ")"
+end
+
+print([[pub static PARSERS: LazyLock<HashMap<&'static str, Parser>> = LazyLock::new(|| {
+ HashMap::from([]])
+for lang, _data in parsers_content:gmatch("list%.(%w+)%s-=%s-{.-install_info%s-=%s(%b{})") do
+ local data = load("return " .. _data)()
+ local info = {
+ url = "",
+ files = {},
+ generate_requires_npm = false,
+ requires_generate_from_grammar = false,
+ use_makefile = false,
+ }
+
+ crush(info, data)
+ local files_str = ""
+ for _,v in ipairs(info.files) do
+ files_str = files_str .. "\"" .. v .. "\"" .. (next(info.files, _) ~= nil and "," or "")
+ end
+
+ print(" (" .. quote(lang) .. ", Parser {")
+ print(" url: " .. quote(info.url) .. ",")
+ print(" branch: " .. opt(info.branch) .. ",")
+ print(" revision: " .. opt(info.revision) .. ",")
+ print(" files: &[".. files_str .. "],")
+ print(" generate_requires_npm: " .. tostring(info.generate_requires_npm) .. ",")
+ print(" requires_generate_from_grammar: " .. tostring(info.requires_generate_from_grammar) .. ",")
+ print(" location: " .. opt(info.location) .. ",")
+ print(" use_makefile: " .. tostring(info.use_makefile) .. ",")
+ print(" cxx_standard: " .. opt(info.cxx_standard))
+ print(" }),")
+end
+print(" ])")
+print("});")
diff --git a/nvim-treesitter b/nvim-treesitter
new file mode 160000
+Subproject 42fc28ba918343ebfd5565147a42a2658057948
diff --git a/rustfmt.toml b/rustfmt.toml
new file mode 100644
index 0000000..3c7f9b0
--- /dev/null
+++ b/rustfmt.toml
@@ -0,0 +1,4 @@
+imports_layout = "Vertical"
+unstable_features = true
+group_imports = "StdExternalCrate"
+imports_granularity = "Crate"
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,
+// },
+// ),
+// ])
+// });