# 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