diff options
| author | delta <darkussdelta@gmail.com> | 2025-08-26 00:57:02 +0200 |
|---|---|---|
| committer | delta <darkussdelta@gmail.com> | 2025-08-26 00:58:09 +0200 |
| commit | cfd14e880023752bffe9a01d1781b54ceefa32ec (patch) | |
| tree | caf8bf8ef7cb966c9d06776bb75d02d11fe7eda7 | |
initial commit
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | .gitmodules | 3 | ||||
| -rw-r--r-- | Cargo.lock | 689 | ||||
| -rw-r--r-- | Cargo.toml | 11 | ||||
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | build.rs | 21 | ||||
| -rw-r--r-- | generate_parsers.lua | 59 | ||||
| m--------- | nvim-treesitter | 0 | ||||
| -rw-r--r-- | rustfmt.toml | 4 | ||||
| -rw-r--r-- | src/highlights.rs | 80 | ||||
| -rw-r--r-- | src/main.rs | 179 | ||||
| -rw-r--r-- | src/parsers.rs | 4273 |
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, +// }, +// ), +// ]) +// }); |
