Skip to content

Commit fac61ec

Browse files
jonatankloskothe-mikedavis
authored andcommitted
Update tree-sitter
1 parent ea652b8 commit fac61ec

32 files changed

+1895
-1048
lines changed

.editorconfig

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
6+
[*.{json,toml,yml,gyp}]
7+
indent_style = space
8+
indent_size = 2
9+
10+
[*.js]
11+
indent_style = space
12+
indent_size = 2
13+
14+
[*.scm]
15+
indent_style = space
16+
indent_size = 2
17+
18+
[*.{c,cc,h}]
19+
indent_style = space
20+
indent_size = 4
21+
22+
[*.rs]
23+
indent_style = space
24+
indent_size = 4
25+
26+
[*.{py,pyi}]
27+
indent_style = space
28+
indent_size = 4
29+
30+
[*.swift]
31+
indent_style = space
32+
indent_size = 4
33+
34+
[*.go]
35+
indent_style = tab
36+
indent_size = 8
37+
38+
[Makefile]
39+
indent_style = tab
40+
indent_size = 8
41+
42+
[parser.c]
43+
indent_size = 2
44+
45+
[{alloc,array,parser}.h]
46+
indent_size = 2

CMakeLists.txt

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
cmake_minimum_required(VERSION 3.13)
2+
3+
project(tree-sitter-heex
4+
VERSION "0.7.0"
5+
DESCRIPTION "Tree-sitter grammar for HEEx files"
6+
HOMEPAGE_URL "https://github.com/phoenixframework/tree-sitter-heex"
7+
LANGUAGES C)
8+
9+
option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
10+
option(TREE_SITTER_REUSE_ALLOCATOR "Reuse the library allocator" OFF)
11+
12+
set(TREE_SITTER_ABI_VERSION 14 CACHE STRING "Tree-sitter ABI version")
13+
if(NOT ${TREE_SITTER_ABI_VERSION} MATCHES "^[0-9]+$")
14+
unset(TREE_SITTER_ABI_VERSION CACHE)
15+
message(FATAL_ERROR "TREE_SITTER_ABI_VERSION must be an integer")
16+
endif()
17+
18+
find_program(TREE_SITTER_CLI tree-sitter DOC "Tree-sitter CLI")
19+
20+
add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/src/parser.c"
21+
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/grammar.json"
22+
COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json
23+
--abi=${TREE_SITTER_ABI_VERSION}
24+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
25+
COMMENT "Generating parser.c")
26+
27+
add_library(tree-sitter-heex src/parser.c)
28+
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/scanner.c)
29+
target_sources(tree-sitter-heex PRIVATE src/scanner.c)
30+
endif()
31+
target_include_directories(tree-sitter-heex PRIVATE src)
32+
33+
target_compile_definitions(tree-sitter-heex PRIVATE
34+
$<$<BOOL:${TREE_SITTER_REUSE_ALLOCATOR}>:TREE_SITTER_REUSE_ALLOCATOR>
35+
$<$<CONFIG:Debug>:TREE_SITTER_DEBUG>)
36+
37+
set_target_properties(tree-sitter-heex
38+
PROPERTIES
39+
C_STANDARD 11
40+
POSITION_INDEPENDENT_CODE ON
41+
SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}"
42+
DEFINE_SYMBOL "")
43+
44+
configure_file(bindings/c/tree-sitter-heex.pc.in
45+
"${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-heex.pc" @ONLY)
46+
47+
include(GNUInstallDirs)
48+
49+
install(FILES bindings/c/tree-sitter-heex.h
50+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/tree_sitter")
51+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-heex.pc"
52+
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig")
53+
install(TARGETS tree-sitter-heex
54+
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
55+
56+
add_custom_target(ts-test "${TREE_SITTER_CLI}" test
57+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
58+
COMMENT "tree-sitter test")

Cargo.toml

+5-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description = "heex grammar for the tree-sitter parsing library"
44
version = "0.7.0"
55
keywords = ["incremental", "parsing", "heex"]
66
categories = ["parsing", "text-editors"]
7-
repository = "https://github.com/tree-sitter/tree-sitter-heex"
7+
repository = "https://github.com/phoenixframework/tree-sitter-heex"
88
edition = "2018"
99
license = "MIT"
1010

@@ -20,7 +20,10 @@ include = [
2020
path = "bindings/rust/lib.rs"
2121

2222
[dependencies]
23-
tree-sitter = "0.22"
23+
tree-sitter-language = "0.1.0"
24+
25+
[dev-dependencies]
26+
tree-sitter = "0.24.7"
2427

2528
[build-dependencies]
2629
cc = "1.0"

Makefile

+94
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
ifeq ($(OS),Windows_NT)
2+
$(error Windows is not supported)
3+
endif
4+
5+
LANGUAGE_NAME := tree-sitter-heex
6+
HOMEPAGE_URL := https://github.com/phoenixframework/tree-sitter-heex
7+
VERSION := 0.7.0
8+
9+
# repository
10+
SRC_DIR := src
11+
12+
TS ?= tree-sitter
13+
14+
# install directory layout
15+
PREFIX ?= /usr/local
16+
INCLUDEDIR ?= $(PREFIX)/include
17+
LIBDIR ?= $(PREFIX)/lib
18+
PCLIBDIR ?= $(LIBDIR)/pkgconfig
19+
20+
# source/object files
21+
PARSER := $(SRC_DIR)/parser.c
22+
EXTRAS := $(filter-out $(PARSER),$(wildcard $(SRC_DIR)/*.c))
23+
OBJS := $(patsubst %.c,%.o,$(PARSER) $(EXTRAS))
24+
25+
# flags
26+
ARFLAGS ?= rcs
27+
override CFLAGS += -I$(SRC_DIR) -std=c11 -fPIC
28+
29+
# ABI versioning
30+
SONAME_MAJOR = $(shell sed -n 's/\#define LANGUAGE_VERSION //p' $(PARSER))
31+
SONAME_MINOR = $(word 1,$(subst ., ,$(VERSION)))
32+
33+
# OS-specific bits
34+
ifeq ($(shell uname),Darwin)
35+
SOEXT = dylib
36+
SOEXTVER_MAJOR = $(SONAME_MAJOR).$(SOEXT)
37+
SOEXTVER = $(SONAME_MAJOR).$(SONAME_MINOR).$(SOEXT)
38+
LINKSHARED = -dynamiclib -Wl,-install_name,$(LIBDIR)/lib$(LANGUAGE_NAME).$(SOEXTVER),-rpath,@executable_path/../Frameworks
39+
else
40+
SOEXT = so
41+
SOEXTVER_MAJOR = $(SOEXT).$(SONAME_MAJOR)
42+
SOEXTVER = $(SOEXT).$(SONAME_MAJOR).$(SONAME_MINOR)
43+
LINKSHARED = -shared -Wl,-soname,lib$(LANGUAGE_NAME).$(SOEXTVER)
44+
endif
45+
ifneq ($(filter $(shell uname),FreeBSD NetBSD DragonFly),)
46+
PCLIBDIR := $(PREFIX)/libdata/pkgconfig
47+
endif
48+
49+
all: lib$(LANGUAGE_NAME).a lib$(LANGUAGE_NAME).$(SOEXT) $(LANGUAGE_NAME).pc
50+
51+
lib$(LANGUAGE_NAME).a: $(OBJS)
52+
$(AR) $(ARFLAGS) $@ $^
53+
54+
lib$(LANGUAGE_NAME).$(SOEXT): $(OBJS)
55+
$(CC) $(LDFLAGS) $(LINKSHARED) $^ $(LDLIBS) -o $@
56+
ifneq ($(STRIP),)
57+
$(STRIP) $@
58+
endif
59+
60+
$(LANGUAGE_NAME).pc: bindings/c/$(LANGUAGE_NAME).pc.in
61+
sed -e 's|@PROJECT_VERSION@|$(VERSION)|' \
62+
-e 's|@CMAKE_INSTALL_LIBDIR@|$(LIBDIR:$(PREFIX)/%=%)|' \
63+
-e 's|@CMAKE_INSTALL_INCLUDEDIR@|$(INCLUDEDIR:$(PREFIX)/%=%)|' \
64+
-e 's|@PROJECT_DESCRIPTION@|$(DESCRIPTION)|' \
65+
-e 's|@PROJECT_HOMEPAGE_URL@|$(HOMEPAGE_URL)|' \
66+
-e 's|@CMAKE_INSTALL_PREFIX@|$(PREFIX)|' $< > $@
67+
68+
$(PARSER): $(SRC_DIR)/grammar.json
69+
$(TS) generate $^
70+
71+
install: all
72+
install -d '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter '$(DESTDIR)$(PCLIBDIR)' '$(DESTDIR)$(LIBDIR)'
73+
install -m644 bindings/c/$(LANGUAGE_NAME).h '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter/$(LANGUAGE_NAME).h
74+
install -m644 $(LANGUAGE_NAME).pc '$(DESTDIR)$(PCLIBDIR)'/$(LANGUAGE_NAME).pc
75+
install -m644 lib$(LANGUAGE_NAME).a '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).a
76+
install -m755 lib$(LANGUAGE_NAME).$(SOEXT) '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXTVER)
77+
ln -sf lib$(LANGUAGE_NAME).$(SOEXTVER) '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXTVER_MAJOR)
78+
ln -sf lib$(LANGUAGE_NAME).$(SOEXTVER_MAJOR) '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXT)
79+
80+
uninstall:
81+
$(RM) '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).a \
82+
'$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXTVER) \
83+
'$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXTVER_MAJOR) \
84+
'$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXT) \
85+
'$(DESTDIR)$(INCLUDEDIR)'/tree_sitter/$(LANGUAGE_NAME).h \
86+
'$(DESTDIR)$(PCLIBDIR)'/$(LANGUAGE_NAME).pc
87+
88+
clean:
89+
$(RM) $(OBJS) $(LANGUAGE_NAME).pc lib$(LANGUAGE_NAME).a lib$(LANGUAGE_NAME).$(SOEXT)
90+
91+
test:
92+
$(TS) test
93+
94+
.PHONY: all install uninstall clean test

Package.swift

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// swift-tools-version:5.3
2+
import PackageDescription
3+
4+
let package = Package(
5+
name: "TreeSitterHeex",
6+
products: [
7+
.library(name: "TreeSitterHeex", targets: ["TreeSitterHeex"]),
8+
],
9+
dependencies: [
10+
.package(url: "https://github.com/ChimeHQ/SwiftTreeSitter", from: "0.8.0"),
11+
],
12+
targets: [
13+
.target(
14+
name: "TreeSitterHeex",
15+
dependencies: [],
16+
path: ".",
17+
sources: [
18+
"src/parser.c",
19+
// NOTE: if your language has an external scanner, add it here.
20+
],
21+
resources: [
22+
.copy("queries")
23+
],
24+
publicHeadersPath: "bindings/swift",
25+
cSettings: [.headerSearchPath("src")]
26+
),
27+
.testTarget(
28+
name: "TreeSitterHeexTests",
29+
dependencies: [
30+
"SwiftTreeSitter",
31+
"TreeSitterHeex",
32+
],
33+
path: "bindings/swift/TreeSitterHeexTests"
34+
)
35+
],
36+
cLanguageStandard: .c11
37+
)

binding.gyp

+17-6
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,29 @@
22
"targets": [
33
{
44
"target_name": "tree_sitter_heex_binding",
5+
"dependencies": [
6+
"<!(node -p \"require('node-addon-api').targets\"):node_addon_api_except",
7+
],
58
"include_dirs": [
6-
"<!(node -e \"require('nan')\")",
7-
"src"
9+
"src",
810
],
911
"sources": [
1012
"bindings/node/binding.cc",
1113
"src/parser.c",
12-
# If your language uses an external scanner, add it here.
14+
# NOTE: if your language has an external scanner, add it here.
15+
],
16+
"conditions": [
17+
["OS!='win'", {
18+
"cflags_c": [
19+
"-std=c11",
20+
],
21+
}, { # OS == "win"
22+
"cflags_c": [
23+
"/std:c11",
24+
"/utf-8",
25+
],
26+
}],
1327
],
14-
"cflags_c": [
15-
"-std=c99",
16-
]
1728
}
1829
]
1930
}

bindings/c/tree-sitter-heex.h

+16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindings/c/tree-sitter-heex.pc.in

+10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindings/go/binding.go

+13
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindings/go/binding_test.go

+15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindings/node/binding.cc

+14-22
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)