89 lines
1.9 KiB
Markdown
89 lines
1.9 KiB
Markdown
# tree-sitter-storybook
|
|
|
|
Tree-sitter grammar for the Storybook narrative DSL.
|
|
|
|
## Overview
|
|
|
|
This is a Tree-sitter grammar for Storybook, a domain-specific language for narrative design and character development. The grammar provides syntax highlighting, code navigation, and other editor features through Tree-sitter.
|
|
|
|
## Features
|
|
|
|
- **Syntax highlighting** for all Storybook constructs
|
|
- **Symbol outline** for navigating characters, templates, relationships, etc.
|
|
- **Bracket matching** including special handling for prose blocks
|
|
- **Auto-indentation** support
|
|
|
|
## Installation
|
|
|
|
### For development
|
|
|
|
```bash
|
|
# Install dependencies
|
|
npm install
|
|
|
|
# Generate parser
|
|
npm run build
|
|
|
|
# Run tests
|
|
npm run test
|
|
```
|
|
|
|
### For Zed editor
|
|
|
|
This grammar is integrated into the Zed Storybook extension. See the `zed-storybook` directory for the extension.
|
|
|
|
## Grammar Structure
|
|
|
|
The grammar supports the following top-level declarations:
|
|
|
|
- `use` - Import statements
|
|
- `character` - Character definitions
|
|
- `template` - Reusable field templates
|
|
- `life_arc` - State machines for character development
|
|
- `schedule` - Daily schedules and routines
|
|
- `behavior` - Behavior trees for AI
|
|
- `institution` - Organizations and groups
|
|
- `relationship` - Multi-party relationships
|
|
- `location` - Places and settings
|
|
- `species` - Species definitions with templates
|
|
- `enum` - Enumeration types
|
|
|
|
## Special Features
|
|
|
|
### Prose Blocks
|
|
|
|
The grammar includes an external scanner (written in C) to handle prose blocks:
|
|
|
|
```storybook
|
|
---backstory
|
|
This is a prose block that can contain
|
|
multiple lines of narrative text.
|
|
---
|
|
```
|
|
|
|
### Expression Support
|
|
|
|
Full support for expressions in life arc transitions:
|
|
|
|
```storybook
|
|
on self.age >= 18 and self.location is wonderland -> adult_state
|
|
```
|
|
|
|
## Testing
|
|
|
|
The grammar includes comprehensive tests. Run them with:
|
|
|
|
```bash
|
|
tree-sitter test
|
|
```
|
|
|
|
To test parsing a specific file:
|
|
|
|
```bash
|
|
tree-sitter parse path/to/file.sb
|
|
```
|
|
|
|
## License
|
|
|
|
MIT
|