# 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 appear in the middle of an identifier.
* The node `directive` no longer contains the sub node `symbol`. It is now a single node.
* Some extensions were added, see below.
## Status
~~tree-sitter-scheme should work on a superset of Scheme.~~
Different implementations might have conflicting grammars. I am not sure if I should support
them. If you need some implementation-specific features, please open an issue, then I will consider supporting 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`
* [x] character `#\u[A-Fa-f0-9]+`
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))
* [ ] Steel Scheme ([#17](https://github.com/6cdh/tree-sitter-scheme/issues/17))
## Usage
See [nodes.md](./nodes.md) for all visible nodes.
This parser doesn't parse language constructs. Instead, it parses 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)