https://github.com/tree-sitter-grammars/tree-sitter-commonlisp
Common Lisp grammar for tree-sitter
https://github.com/tree-sitter-grammars/tree-sitter-commonlisp
common-lisp parser tree-sitter
Last synced: 14 days ago
JSON representation
Common Lisp grammar for tree-sitter
- Host: GitHub
- URL: https://github.com/tree-sitter-grammars/tree-sitter-commonlisp
- Owner: tree-sitter-grammars
- License: mit
- Created: 2021-04-05T14:45:51.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2025-03-16T15:49:28.000Z (about 1 month ago)
- Last Synced: 2025-04-02T04:09:30.029Z (21 days ago)
- Topics: common-lisp, parser, tree-sitter
- Language: JavaScript
- Homepage:
- Size: 6.7 MB
- Stars: 52
- Watchers: 8
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# tree-sitter-commonlisp
[![CI][ci]](https://github.com/tree-sitter-grammars/tree-sitter-commonlisp/actions/workflows/ci.yml)
[![discord][discord]](https://discord.gg/w7nTvsVJhm)
[![matrix][matrix]](https://matrix.to/#/#tree-sitter-chat:matrix.org)
[![npm][npm]](https://www.npmjs.com/package/tree-sitter-commonlisp)
[![crates][crates]](https://crates.io/crates/tree-sitter-commonlisp)
[![pypi][pypi]](https://pypi.org/project/tree-sitter-commonlisp)WIP. Goal is to have a better syntax highlighting for Neovim
and some semantic refactoring https://github.com/nvim-treesitter/nvim-treesitter-refactor/.All praise goes to https://github.com/sogaiu/tree-sitter-clojure which is extended by this grammar.
TODOs:
- support number literals that are different from clojure (e.g. `.9`)
Macros with special respresentation in syntax tree (when written with lowercase letters):
- defun and friends (e.g. defmethod)
- loop macroThis grammar is used in https://github.com/Wilfred/difftastic to generate syntax-ware diffs for Common Lisp.
## Usage
- C/C++
- compilation run `make` (optional `make install`)
- Follow the [Guide on using tree-sitter parsers](https://tree-sitter.github.io/tree-sitter/using-parsers/1-getting-started.html#getting-started)
- set `tree_sitter_commonlisp()` as language on your Tree-Sitter parser from [`tree_sitter_commonlisp.h`](https://github.com/tree-sitter-grammars/tree-sitter-commonlisp/blob/4d2a2247bb0ec117193ef33e3ce546a6781c5bf5/bindings/c/tree-sitter-commonlisp.h#L10-L10)
```c
ts_parser_set_language(parser, tree_sitter_commonlisp());
```- Python (`pip install tree-sitter-commonlisp tree-sitter`)
https://github.com/tree-sitter-grammars/tree-sitter-commonlisp/blob/4d2a2247bb0ec117193ef33e3ce546a6781c5bf5/bindings/python/tests/test_import.py#L15-L23
- Rust `cargo add tree-sitter tree-sitter-grammars`
https://github.com/tree-sitter-grammars/tree-sitter-commonlisp/blob/4d2a2247bb0ec117193ef33e3ce546a6781c5bf5/bindings/rust/lib.rs#L47-L50
- Swift
https://github.com/tree-sitter-grammars/tree-sitter-commonlisp/blob/4d2a2247bb0ec117193ef33e3ce546a6781c5bf5/bindings/swift/TreeSitterCommonlispTests/TreeSitterCommonlispTests.swift#L3-L13
- Go
https://github.com/tree-sitter-grammars/tree-sitter-commonlisp/blob/4d2a2247bb0ec117193ef33e3ce546a6781c5bf5/bindings/go/binding_test.go#L1-L15[ci]: https://img.shields.io/github/actions/workflow/status/tree-sitter-grammars/tree-sitter-commonlisp/ci.yml?logo=github&label=CI
[discord]: https://img.shields.io/discord/1063097320771698699?logo=discord&label=discord
[matrix]: https://img.shields.io/matrix/tree-sitter-chat%3Amatrix.org?logo=matrix&label=matrix
[npm]: https://img.shields.io/npm/v/tree-sitter-commonlisp?logo=npm
[crates]: https://img.shields.io/crates/v/tree-sitter-commonlisp?logo=rust
[pypi]: https://img.shields.io/pypi/v/tree-sitter-commonlisp?logo=pypi&logoColor=ffd242