mirror of https://github.com/Wilfred/difftastic/
71 lines
2.5 KiB
Markdown
71 lines
2.5 KiB
Markdown
# tree-sitter-scheme
|
|
|
|
[](https://github.com/6cdh/tree-sitter-scheme/actions/workflows/test.yml)
|
|
|
|
Scheme grammar for tree-sitter.
|
|
|
|
## Recent News
|
|
|
|
* With R7RS support, a single `|` can no longer appears in the middle of an identifier.
|
|
* The nodes `directive` no longer contain sub nodes `symbol`. Now it's a single node.
|
|
* some extensions added, see below
|
|
|
|
## Status
|
|
|
|
~~tree-sitter-scheme should work on a superset of Scheme.~~
|
|
|
|
Different Implementations might have conflict grammar. I am not sure if I should support
|
|
them. If you need some implementation-specific features, please open an issue, then I will consider support it.
|
|
|
|
current status:
|
|
|
|
* [x] R5RS
|
|
* [x] R6RS
|
|
* [x] R7RS
|
|
* [ ] Extensions
|
|
* [x] `{}` as replacement for `()` or `[]`
|
|
* [x] extend symbols which can start with digits, period, ... etc as long as it's not a number
|
|
* [x] keyword `#:symbol`
|
|
* [x] escape sequence in string `\` + any character
|
|
* [x] characters `#\bel`, `#\ls`, `#\nel`, `#\rubout`, `#\vt`
|
|
|
|
Please open an issue to let me know it's really used if you want to add new extensions.
|
|
|
|
## Implementation
|
|
|
|
* [ ] Support for implementation
|
|
* [ ] Chez Scheme ([#1](https://github.com/6cdh/tree-sitter-scheme/issues/1))
|
|
* [ ] Chicken Scheme ([#3](https://github.com/6cdh/tree-sitter-scheme/issues/3))
|
|
* [ ] Guile Scheme ([#7](https://github.com/6cdh/tree-sitter-scheme/issues/7))
|
|
|
|
## Usage
|
|
|
|
See [nodes.md](./nodes.md) for all visible nodes.
|
|
|
|
This parser don't parse language constructs. Instead, it parse code as lists.
|
|
|
|
If you want language constructs support, use custom queries (see [#5](https://github.com/6cdh/tree-sitter-scheme/issues/5)), also see [thchha/tree-sitter-scheme](https://gitlab.com/thchha/tree-sitter-scheme).
|
|
|
|
## Query
|
|
|
|
The queries here are too simple and not intended to be useful in an editor.
|
|
Please open an issue if you have suggestions.
|
|
|
|
## Reference
|
|
|
|
Scheme
|
|
|
|
* [R5RS](https://schemers.org/Documents/Standards/R5RS/)
|
|
* [R6RS](http://www.r6rs.org/)
|
|
* [R7RS](https://small.r7rs.org/)
|
|
* [The Scheme Programming Language](https://www.scheme.com/tspl4/)
|
|
|
|
Tree-sitter
|
|
|
|
* [official documents](https://tree-sitter.github.io/tree-sitter)
|
|
* [Guide to your first Tree-sitter grammar](https://gist.github.com/Aerijo/df27228d70c633e088b0591b8857eeef)
|
|
* [tree-sitter-clojure](https://github.com/sogaiu/tree-sitter-clojure)
|
|
* [tree-sitter-commonlisp](https://github.com/theHamsta/tree-sitter-commonlisp)
|
|
* [tree-sitter-fennel](https://github.com/TravonteD/tree-sitter-fennel)
|
|
|