diff options
Diffstat (limited to 'pkgs/development/tools/parsing/tree-sitter/grammar.nix')
-rw-r--r-- | pkgs/development/tools/parsing/tree-sitter/grammar.nix | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/pkgs/development/tools/parsing/tree-sitter/grammar.nix b/pkgs/development/tools/parsing/tree-sitter/grammar.nix new file mode 100644 index 00000000000..f92e0d79426 --- /dev/null +++ b/pkgs/development/tools/parsing/tree-sitter/grammar.nix @@ -0,0 +1,42 @@ +{ stdenv +, tree-sitter +}: + +# Build a parser grammar and put the resulting shared object in `$out/parser` + +{ + # language name + language + # version of tree-sitter +, version + # source for the language grammar +, source +}: + +stdenv.mkDerivation { + + pname = "${language}-grammar"; + inherit version; + + src = source; + + buildInputs = [ tree-sitter ]; + + dontUnpack = true; + configurePhase= ":"; + buildPhase = '' + runHook preBuild + scanner_cc="$src/src/scanner.cc" + if [ ! -f "$scanner_cc" ]; then + scanner_cc="" + fi + $CC -I$src/src/ -shared -o parser -Os $src/src/parser.c $scanner_cc -lstdc++ + runHook postBuild + ''; + installPhase = '' + runHook preInstall + mkdir $out + mv parser $out/ + runHook postInstall + ''; +} |