Mercurial > core / lisp/ffi/tree-sitter/pkg.lisp
changeset 523: |
04d0a4f857f6 |
parent: |
9e133c99b080
|
child: |
08621be7e780 |
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Sun, 07 Jul 2024 20:10:49 -0400 |
permissions: |
-rw-r--r-- |
description: |
tree-sitter ffi fixes |
1 ;;; ffi/tree-sitter/pkg.lisp --- Tree-sitter FFI 3 ;; Tree-sitter FFI for Lisp 5 ;; Tree-sitter consists of the base library, which you can load using 6 ;; the LOAD-TREE-SITTER function, and the language parsers. 8 ;; The language parser shared libraries should ALWAYS be located in 9 ;; /usr/local/lib/ and be prefixed with 'lib' like so: 10 ;; '/usr/local/lib/libtree-sitter-json.so'. Static libraries are not 13 ;; The language parsers have associated json files which should ALWAYS 14 ;; be stored in subdirectories of /usr/local/share/tree-sitter/ like 15 ;; so: '/usr/local/share/tree-sitter/json/grammar.json'. 18 (defpackage :tree-sitter 20 (:use :cl :std :sb-alien :std/alien) 23 :load-tree-sitter-alien 24 :tree-sitter-language-files 27 :*tree-sitter-language-directory* 37 :ts-lookahead-iterator 47 :ts-parser-set-language 50 :ts-parser-parse-string 51 :ts-parser-print-dot-graphs 56 :ts-tree-print-dot-graph 61 :ts-node-grammar-symbol 70 :ts-tree-cursor-new-pointer 71 :ts-tree-cursor-delete 74 :ts-language-symbol-name 75 :ts-language-symbol-count 76 :ts-language-field-count 77 :ts-tree-cursor-current-field-name 78 :ts-tree-cursor-goto-next-sibling 79 :ts-tree-cursor-goto-parent 80 :ts-tree-cursor-goto-first-child 83 :ts-tree-root-node-pointer 84 :ts-node-is-named-pointer 85 :ts-tree-cursor-current-node-pointer 86 :ts-node-start-point-pointer 87 :ts-node-end-point-pointer 88 :ts-node-type-pointer)) 90 (in-package :tree-sitter) 92 (defun load-tree-sitter () 93 (unless (member :tree-sitter *features*) 94 (sb-alien:load-shared-object (shared-object-name "tree-sitter") :dont-save t) 95 (load-tree-sitter-alien) 96 (push :tree-sitter *features*))) 98 (defun load-tree-sitter-alien () 99 (handler-bind ((simple-error 101 (warn "failed to load libtree-sitter-alien.so --- make sure to follow the install instructions in lis/lib/ffi/tree-sitter/alien.c! ~a" condition)))) 102 (sb-alien:load-shared-object "/usr/local/lib/libtree-sitter-alien.so" :dont-save nil)))