1.9 KiB
1.9 KiB
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
# 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 statementscharacter- Character definitionstemplate- Reusable field templateslife_arc- State machines for character developmentschedule- Daily schedules and routinesbehavior- Behavior trees for AIinstitution- Organizations and groupsrelationship- Multi-party relationshipslocation- Places and settingsspecies- Species definitions with templatesenum- Enumeration types
Special Features
Prose Blocks
The grammar includes an external scanner (written in C) to handle prose blocks:
---backstory
This is a prose block that can contain
multiple lines of narrative text.
---
Expression Support
Full support for expressions in life arc transitions:
on self.age >= 18 and self.location is wonderland -> adult_state
Testing
The grammar includes comprehensive tests. Run them with:
tree-sitter test
To test parsing a specific file:
tree-sitter parse path/to/file.sb
License
MIT