Skip to content

6cdh/tree-sitter-scheme

Repository files navigation

tree-sitter-scheme

Build/test

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:

  • R5RS
  • R6RS
  • R7RS
  • Extensions
    • {} as replacement for () or []
    • extend symbols which can start with digits, period, ... etc as long as it's not a number
    • keyword #:symbol
    • escape sequence in string \ + any character
    • 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)
    • Chicken Scheme (#3)
    • Guile Scheme (#7)

Usage

See 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), also see 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

Tree-sitter