Something went wrong. Try again.
(MIRROR) Grabs zig bindings for tree-sitter git.gae.moe/grace/eazy-zig-tree-sitter
zig tree-sitter
Something went wrong. Try again.
8.6 kB · 219 lines
Zig
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220const std = @import("std");const testing = std.testing;const ts = @import("tree-sitter");const ezts = @import("eazy_zig_tree_sitter");const grammars = @import("grammars");
const Entry = struct { key: []const u8, source: []const u8 };
fn runParseTest(entries: []const Entry) !void { for (entries) |e| { const lang = ezts.getLang(e.key) orelse @panic("unknown lang"); defer lang.destroy(); var parser = ts.Parser.create(); defer parser.destroy(); try parser.setLanguage(lang); const tree = parser.parseString(e.source, null) orelse { std.debug.print("PARSE FAIL: {s}\n", .{e.key}); return error.ParseFailed; }; defer tree.destroy(); }}
const parse_entries: []const Entry = &.{ .{ .key = "ada", .source = "" }, .{ .key = "angular", .source = "" }, .{ .key = "apex", .source = "" }, .{ .key = "asm", .source = "" }, .{ .key = "astro", .source = "" }, .{ .key = "authzed", .source = "" }, .{ .key = "awk", .source = "1" }, .{ .key = "bass", .source = "" }, .{ .key = "beancount", .source = "" }, .{ .key = "bibtex", .source = "" }, .{ .key = "blade", .source = "" }, .{ .key = "bp", .source = "" }, .{ .key = "brightscript", .source = "" }, .{ .key = "caddy", .source = "" }, .{ .key = "circom", .source = "" }, .{ .key = "clojure", .source = "1" }, .{ .key = "cmake", .source = "" }, .{ .key = "comment", .source = "" }, .{ .key = "cooklang", .source = "" }, .{ .key = "corn", .source = "" }, .{ .key = "cue", .source = "" }, .{ .key = "cylc", .source = "" }, .{ .key = "d", .source = "1" }, .{ .key = "dart", .source = "1" }, .{ .key = "desktop", .source = "" }, .{ .key = "dhall", .source = "" }, .{ .key = "disassembly", .source = "" }, .{ .key = "djot", .source = "" }, .{ .key = "dockerfile", .source = "FROM a" }, .{ .key = "dot", .source = "" }, .{ .key = "earthfile", .source = "" }, .{ .key = "ebnf", .source = "" }, .{ .key = "editorconfig", .source = "" }, .{ .key = "eds", .source = "" }, .{ .key = "eex", .source = "" }, // .{ .key = "ex", .source = "1" }, .{ .key = "elm", .source = "1" }, .{ .key = "elsa", .source = "" }, .{ .key = "elvish", .source = "" }, .{ .key = "enforce", .source = "" }, .{ .key = "erl", .source = "1" }, .{ .key = "facility", .source = "" }, .{ .key = "faust", .source = "" }, .{ .key = "fennel", .source = "1" }, .{ .key = "fidl", .source = "" }, .{ .key = "fish", .source = "1" }, .{ .key = "foam", .source = "" }, .{ .key = "forth", .source = "" }, .{ .key = "f90", .source = "end" }, .{ .key = "fsh", .source = "" }, .{ .key = "fs", .source = "1" }, .{ .key = "gap", .source = "" }, .{ .key = "gaptst", .source = "" }, .{ .key = "gdshader", .source = "" }, .{ .key = "git_config", .source = "" }, .{ .key = "git_rebase", .source = "" }, .{ .key = "gitcommit", .source = "" }, .{ .key = "gitignore", .source = "" }, .{ .key = "gleam", .source = "1" }, .{ .key = "gnuplot", .source = "" }, .{ .key = "goctl", .source = "" }, .{ .key = "godot_resource", .source = "" }, .{ .key = "gomod", .source = "module m" }, .{ .key = "gowork", .source = "go 1.20" }, .{ .key = "gql", .source = "{a}" }, .{ .key = "gren", .source = "" }, .{ .key = "groovy", .source = "1+1" }, .{ .key = "haskell_persistent", .source = "" }, .{ .key = "heex", .source = "<p>1" }, .{ .key = "hjson", .source = "{a:1}" }, .{ .key = "hocon", .source = "{a=1}" }, .{ .key = "hoon", .source = "" }, .{ .key = "htmldjango", .source = "{{1}}" }, .{ .key = "http", .source = "GET /" }, .{ .key = "hurl", .source = "" }, .{ .key = "idl", .source = "" }, .{ .key = "idris", .source = "1+1" }, .{ .key = "ini", .source = "k=v" }, .{ .key = "inko", .source = "" }, .{ .key = "janet_simple", .source = "1" }, .{ .key = "javadoc", .source = "@param" }, .{ .key = "jinja", .source = "{{1}}" }, .{ .key = "jinja_inline", .source = "{{1}}" }, .{ .key = "jq", .source = "." }, .{ .key = "json5", .source = "{a:1}" }, .{ .key = "jsonnet", .source = "{}" }, .{ .key = "just", .source = "a:" }, .{ .key = "kcl", .source = "" }, .{ .key = "koto", .source = "" }, .{ .key = "kusto", .source = "T|take 1" }, .{ .key = "lalrpop", .source = "" }, .{ .key = "ledger", .source = "2024-01-01" }, .{ .key = "leo", .source = "" }, .{ .key = "liquid", .source = "{{1}}" }, .{ .key = "liquidsoap", .source = "" }, .{ .key = "llvm", .source = "i32 0" }, .{ .key = "m68k", .source = "" }, .{ .key = "menhir", .source = "" }, .{ .key = "mermaid", .source = "A-->B" }, .{ .key = "mlir", .source = "module {" }, .{ .key = "nasm", .source = "mov ax,1" }, .{ .key = "nginx", .source = "server{}" }, .{ .key = "nickel", .source = "" }, .{ .key = "nim", .source = "echo 1" }, .{ .key = "nim_format_string", .source = "" }, .{ .key = "ninja", .source = "rule a" }, .{ .key = "nix", .source = "{}" }, .{ .key = "nu", .source = "1" }, .{ .key = "objdump", .source = "" }, .{ .key = "ocamllex", .source = "" }, .{ .key = "pascal", .source = "begin end" }, .{ .key = "passwd", .source = "root:x:0:" }, .{ .key = "phpdoc", .source = "@param" }, .{ .key = "pioasm", .source = "" }, .{ .key = "powershell", .source = "1+1" }, .{ .key = "prisma", .source = "model A{}" }, .{ .key = "problog", .source = "" }, .{ .key = "prolog", .source = "X=1" }, .{ .key = "promql", .source = "up" }, .{ .key = "proto", .source = "syntax" }, .{ .key = "prql", .source = "" }, .{ .key = "pug", .source = "p" }, .{ .key = "purescript", .source = "" }, .{ .key = "qmljs", .source = "" }, .{ .key = "r", .source = "1" }, .{ .key = "racket", .source = "x" }, .{ .key = "ralph", .source = "" }, .{ .key = "rasi", .source = "" }, .{ .key = "razor", .source = "@{}" }, .{ .key = "rbs", .source = "" }, .{ .key = "rego", .source = "package p" }, .{ .key = "rescript", .source = "" }, .{ .key = "rnoweb", .source = "" }, .{ .key = "robot", .source = "" }, .{ .key = "robots", .source = "" }, .{ .key = "roc", .source = "" }, .{ .key = "rst", .source = ".. " }, .{ .key = "scfg", .source = "" }, .{ .key = "scheme", .source = "#t" }, .{ .key = "sflog", .source = "" }, .{ .key = "slim", .source = "" }, .{ .key = "slint", .source = "" }, .{ .key = "smithy", .source = "" }, .{ .key = "snakemake", .source = "" }, .{ .key = "solidity", .source = "pragma" }, .{ .key = "soql", .source = "" }, .{ .key = "sosl", .source = "" }, .{ .key = "sourcepawn", .source = "" }, .{ .key = "sparql", .source = "" }, .{ .key = "strace", .source = "" }, .{ .key = "styled", .source = "" }, .{ .key = "supercollider", .source = "" }, .{ .key = "surface", .source = "" }, .{ .key = "sway", .source = "" }, .{ .key = "sxhkdrc", .source = "" }, .{ .key = "systemtap", .source = "" }, .{ .key = "tact", .source = "" }, .{ .key = "templ", .source = "" }, .{ .key = "tera", .source = "" }, .{ .key = "textproto", .source = "" }, .{ .key = "tiger", .source = "" }, .{ .key = "tlaplus", .source = "" }, .{ .key = "todotxt", .source = "" }, .{ .key = "turtle", .source = "" }, .{ .key = "twig", .source = "" }, .{ .key = "typespec", .source = "" }, .{ .key = "typoscript", .source = "" }, .{ .key = "typst", .source = "" }, .{ .key = "unison", .source = "" }, .{ .key = "usd", .source = "" }, .{ .key = "vlang", .source = "1" }, .{ .key = "vala", .source = "" }, .{ .key = "vento", .source = "" }, .{ .key = "systemverilog", .source = "module" }, .{ .key = "vhdl", .source = "entity" }, .{ .key = "vhs", .source = "" }, .{ .key = "vimdoc", .source = "" }, .{ .key = "vrl", .source = "" }, .{ .key = "wgsl", .source = "" }, .{ .key = "wing", .source = "" }, .{ .key = "wit", .source = "" }, .{ .key = "xresources", .source = "" }, .{ .key = "yang", .source = "" },};
comptime { @setEvalBranchQuota(50000); for (parse_entries) |e| { if (!grammars.languages.has(e.key)) @compileError("unknown lang: " ++ e.key); }}
test "parse third-party languages" { try runParseTest(parse_entries);}