This commit completes the migration started in the previous commit, updating all remaining files: - Lexer: Changed token from Extends to Modifies - Parser: Updated lalrpop grammar rules and AST field names - AST: Renamed Schedule.extends field to modifies - Grammar: Updated tree-sitter grammar.js - Tree-sitter: Regenerated parser.c and node-types.json - Examples: Updated baker-family work schedules - Tests: Updated schedule composition tests and corpus - Docs: Updated all reference documentation and tutorials - Validation: Updated error messages and validation logic - Package: Bumped version to 0.3.1 in all package manifests All 554 tests pass.
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