Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified core/.jvm/src/main/resources/linux-aarch64/libtree-sitter.so
Binary file not shown.
Binary file modified core/.jvm/src/main/resources/linux-x86-64/libtree-sitter.so
Binary file not shown.
31 changes: 28 additions & 3 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@
inputs.nixpkgs.url = "github:NixOS/nixpkgs";
inputs.flake-utils.url = "github:numtide/flake-utils";

outputs = { nixpkgs, flake-utils, ... }:
outputs = { self, nixpkgs, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (system:
let pkgs = import nixpkgs { inherit system; };
in {
devShells.default =
pkgs.mkShell { packages = [ pkgs.sbt pkgs.tree-sitter ]; };
devShells.default = pkgs.mkShell {
packages = [ pkgs.sbt pkgs.tree-sitter pkgs.nodejs ];
};

packages.tree-sitter = pkgs.stdenv.mkDerivation {
name = "tree-sitter";
Expand Down Expand Up @@ -42,5 +43,29 @@
cp libtree-sitter-python.so $out
'';
};

packages.tree-sitter-funlang = pkgs.stdenv.mkDerivation {
name = "tree-sitter-funlang";
src = ./tree-sitter-funlang;
buildInputs = [ pkgs.tree-sitter pkgs.nodejs ];
buildPhase = ''
tree-sitter generate
cc src/parser.c -shared -o $out
'';
dontInstall = true;
};
packages.tree-sitter-funlang-all = pkgs.stdenv.mkDerivation {
name = "tree-sitter-funlang-all";
src = ./tree-sitter-funlang;
dontBuild = true;
installPhase = ''
mkdir $out
cd $out
mkdir darwin-aarch64 && cp ${self.packages.aarch64-darwin.tree-sitter-funlang} darwin-aarch64/libtree-sitter-funlang.dylib
mkdir darwin-x86-64 && cp ${self.packages.x86_64-darwin.tree-sitter-funlang} darwin-x86-64/libtree-sitter-funlang.dylib
mkdir linux-aarch64 && cp ${self.packages.aarch64-linux.tree-sitter-funlang} linux-aarch64/libtree-sitter-funlang.so
mkdir linux-x86-64 && cp ${self.packages.x86_64-linux.tree-sitter-funlang} linux-x86-64/libtree-sitter-funlang.so
'';
};
});
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
37 changes: 37 additions & 0 deletions tree-sitter-funlang/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
* text=auto eol=lf

# Generated source files
src/*.json linguist-generated
src/parser.c linguist-generated
src/tree_sitter/* linguist-generated

# C bindings
bindings/c/* linguist-generated
CMakeLists.txt linguist-generated
Makefile linguist-generated

# Rust bindings
bindings/rust/* linguist-generated
Cargo.toml linguist-generated
Cargo.lock linguist-generated

# Node.js bindings
bindings/node/* linguist-generated
binding.gyp linguist-generated
package.json linguist-generated
package-lock.json linguist-generated

# Python bindings
bindings/python/** linguist-generated
setup.py linguist-generated
pyproject.toml linguist-generated

# Go bindings
bindings/go/* linguist-generated
go.mod linguist-generated
go.sum linguist-generated

# Swift bindings
bindings/swift/** linguist-generated
Package.swift linguist-generated
Package.resolved linguist-generated
56 changes: 56 additions & 0 deletions tree-sitter-funlang/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Rust artifacts
target/

# Node artifacts
build/
prebuilds/
node_modules/

# Swift artifacts
.build/

# Go artifacts
_obj/

# Python artifacts
.venv/
dist/
*.egg-info
*.whl

# C artifacts
*.a
*.so
*.so.*
*.dylib
*.dll
*.pc

# Example dirs
/examples/*/

# Grammar volatiles
*.wasm
*.obj
*.o

# Archives
*.tar.gz
*.tgz
*.zip

src/

.editorconfig
Cargo.toml
Makefile
Package.swift
binding.gyp
bindings/
go.mod
package.json
pyproject.toml
setup.py

a.out.js

58 changes: 58 additions & 0 deletions tree-sitter-funlang/CMakeLists.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions tree-sitter-funlang/grammar.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/**
* @file Funlang grammar for tree-sitter
* @author Jakub Kozłowski <[email protected]>
* @license MIT
*/

/// <reference types="tree-sitter-cli/dsl" />
// @ts-check

module.exports = grammar({
name: "funlang",

rules: {
// TODO: add the actual grammar rules
source_file: $ => "hello"
}
});
36 changes: 36 additions & 0 deletions tree-sitter-funlang/tree-sitter.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"grammars": [
{
"name": "funlang",
"camelcase": "Funlang",
"scope": "source.funlang",
"file-types": [
".fl"
],
"injection-regex": "^funlang$"
}
],
"metadata": {
"version": "0.1.0",
"license": "MIT",
"description": "Funlang grammar for tree-sitter",
"authors": [
{
"name": "Jakub Kozłowski",
"email": "[email protected]",
"url": "https://github.com/kubukoz"
}
],
"links": {
"repository": "https://github.com/polyvariant/treesitter4s"
}
},
"bindings": {
"c": true,
"go": true,
"node": true,
"python": true,
"rust": true,
"swift": true
}
}
7 changes: 7 additions & 0 deletions update-libs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,10 @@ mkdir -p bindingsPython/.jvm/src/main/resources/linux-x86-64
BINARY_PATH=$(nix build .#packages.x86_64-linux.tree-sitter-python --no-link --print-out-paths --print-build-logs)
cp $BINARY_PATH bindingsPython/.jvm/src/main/resources/linux-x86-64/libtree-sitter-python.so
chmod 755 bindingsPython/.jvm/src/main/resources/linux-x86-64/libtree-sitter-python.so

# bindingsFunlang

LIBS_PATH=$(nix build .#tree-sitter-funlang-all --no-link --print-out-paths --print-build-logs)
mkdir -p modules/treesitter/src/main/resources
cp -R "$LIBS_PATH"/* modules/treesitter/src/main/resources
chmod -R 755 modules/treesitter/src/main/resources
Loading