Files
storybook/tree-sitter-storybook/src/grammar.json
Sienna Meridian Satterwhite 47fafdc2bf feat(lang): complete extends to modifies keyword migration
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.
2026-02-16 22:55:04 +00:00

3092 lines
64 KiB
JSON

{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "storybook",
"word": "identifier",
"rules": {
"source_file": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "declaration"
}
},
"line_comment": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "//"
},
{
"type": "PATTERN",
"value": ".*"
}
]
}
},
"block_comment": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "/*"
},
{
"type": "PATTERN",
"value": "[^*]*\\*+([^/*][^*]*\\*+)*"
},
{
"type": "STRING",
"value": "/"
}
]
}
},
"declaration": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "use_declaration"
},
{
"type": "SYMBOL",
"name": "character_declaration"
},
{
"type": "SYMBOL",
"name": "template_declaration"
},
{
"type": "SYMBOL",
"name": "life_arc_declaration"
},
{
"type": "SYMBOL",
"name": "schedule_declaration"
},
{
"type": "SYMBOL",
"name": "behavior_declaration"
},
{
"type": "SYMBOL",
"name": "institution_declaration"
},
{
"type": "SYMBOL",
"name": "relationship_declaration"
},
{
"type": "SYMBOL",
"name": "location_declaration"
},
{
"type": "SYMBOL",
"name": "species_declaration"
},
{
"type": "SYMBOL",
"name": "enum_declaration"
},
{
"type": "SYMBOL",
"name": "concept_declaration"
},
{
"type": "SYMBOL",
"name": "sub_concept"
},
{
"type": "SYMBOL",
"name": "concept_comparison"
}
]
},
"use_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "use"
},
{
"type": "SYMBOL",
"name": "path_segments"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "::"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "::"
},
{
"type": "STRING",
"value": "*"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"path": {
"type": "SYMBOL",
"name": "path_segments"
},
"path_segments": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "::"
}
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
"character_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "character"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "species",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "template",
"content": {
"type": "SYMBOL",
"name": "template_clause"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "character_body"
}
}
]
},
"character_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "field"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"template_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "from"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
}
]
},
"template_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "template"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "species",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "strict"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "template_body"
}
}
]
},
"template_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "include"
},
{
"type": "SYMBOL",
"name": "uses_behaviors"
},
{
"type": "SYMBOL",
"name": "uses_schedule"
},
{
"type": "SYMBOL",
"name": "field"
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"uses_behaviors": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "uses"
},
{
"type": "STRING",
"value": "behaviors"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
}
]
},
"uses_schedule": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "uses"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "schedule"
},
{
"type": "STRING",
"value": "schedules"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "]"
}
]
}
]
}
]
},
"include": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "include"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"field": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "dotted_path"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "value"
}
}
]
},
{
"type": "SYMBOL",
"name": "prose_block"
}
]
},
"dotted_path": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
"value": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "boolean"
},
{
"type": "SYMBOL",
"name": "range"
},
{
"type": "SYMBOL",
"name": "time"
},
{
"type": "SYMBOL",
"name": "duration"
},
{
"type": "SYMBOL",
"name": "path"
},
{
"type": "SYMBOL",
"name": "prose_block"
},
{
"type": "SYMBOL",
"name": "list"
},
{
"type": "SYMBOL",
"name": "object"
},
{
"type": "SYMBOL",
"name": "override"
}
]
},
"integer": {
"type": "PATTERN",
"value": "-?[0-9]+"
},
"float": {
"type": "PATTERN",
"value": "-?[0-9]+\\.[0-9]+"
},
"string": {
"type": "PATTERN",
"value": "\"([^\"\\\\]|\\\\.)*\""
},
"boolean": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
}
]
},
"range": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "STRING",
"value": ".."
},
{
"type": "SYMBOL",
"name": "integer"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "STRING",
"value": ".."
},
{
"type": "SYMBOL",
"name": "float"
}
]
}
]
},
"time": {
"type": "PATTERN",
"value": "[0-9]{2}:[0-9]{2}(:[0-9]{2})?"
},
"duration": {
"type": "PATTERN",
"value": "[0-9]+[dhms]([0-9]+[dhms])*"
},
"list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "value"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "value"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"object": {
"type": "SYMBOL",
"name": "block"
},
"block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "field"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"override": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@"
},
{
"type": "SYMBOL",
"name": "path"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "override_op"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"override_op": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "remove"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "append"
},
{
"type": "SYMBOL",
"name": "field"
}
]
},
{
"type": "SYMBOL",
"name": "field"
}
]
},
"prose_block": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "marker",
"content": {
"type": "SYMBOL",
"name": "prose_marker"
}
},
{
"type": "FIELD",
"name": "tag",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\\n]*"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "content",
"content": {
"type": "SYMBOL",
"name": "prose_content"
}
},
{
"type": "FIELD",
"name": "end",
"content": {
"type": "SYMBOL",
"name": "prose_marker"
}
}
]
},
"prose_marker": {
"type": "STRING",
"value": "---"
},
"prose_content": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": -1,
"content": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\\-]+"
},
{
"type": "PATTERN",
"value": "-[^\\-]"
},
{
"type": "PATTERN",
"value": "-\\-[^\\-]"
}
]
}
}
}
},
"life_arc_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "life_arc"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "requires",
"content": {
"type": "SYMBOL",
"name": "requires_clause"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "field"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "state_block"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"requires_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "requires"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "required_field"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "required_field"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"required_field": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"state_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "state"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "state_body"
}
}
]
},
"state_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "on_enter"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "field"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "transition"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"on_enter": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "on"
},
{
"type": "STRING",
"value": "enter"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"transition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "on"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": "->"
},
{
"type": "FIELD",
"name": "target",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"schedule_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "schedule"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "modifies"
},
{
"type": "FIELD",
"name": "modifies",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "schedule_body"
}
}
]
},
"schedule_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "field"
},
{
"type": "SYMBOL",
"name": "schedule_block"
},
{
"type": "SYMBOL",
"name": "override_block"
},
{
"type": "SYMBOL",
"name": "recurrence_block"
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"schedule_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "block"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "FIELD",
"name": "time_range",
"content": {
"type": "SYMBOL",
"name": "time_range"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "block_field"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"override_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "override"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "FIELD",
"name": "time_range",
"content": {
"type": "SYMBOL",
"name": "time_range"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "block_field"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"recurrence_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "recurrence"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "on"
},
{
"type": "FIELD",
"name": "day",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "schedule_block"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"time_range": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "start",
"content": {
"type": "SYMBOL",
"name": "time"
}
},
{
"type": "STRING",
"value": "->"
},
{
"type": "FIELD",
"name": "end",
"content": {
"type": "SYMBOL",
"name": "time"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
"block_field": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "float"
}
]
}
}
]
},
"behavior_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "behavior"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "behavior_body"
}
}
]
},
"behavior_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "field"
}
},
{
"type": "FIELD",
"name": "root",
"content": {
"type": "SYMBOL",
"name": "behavior_node"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"behavior_node": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "selector_node"
},
{
"type": "SYMBOL",
"name": "sequence_node"
},
{
"type": "SYMBOL",
"name": "condition_node"
},
{
"type": "SYMBOL",
"name": "if_decorator_node"
},
{
"type": "SYMBOL",
"name": "repeat_node"
},
{
"type": "SYMBOL",
"name": "decorator_node"
},
{
"type": "SYMBOL",
"name": "action_node"
},
{
"type": "SYMBOL",
"name": "subtree_node"
}
]
},
"selector_node": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "choose"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "label",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "behavior_node"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"sequence_node": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "then"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "label",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "behavior_node"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"condition_node": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "STRING",
"value": "when"
}
]
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": ")"
}
]
},
"if_decorator_node": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "FIELD",
"name": "child",
"content": {
"type": "SYMBOL",
"name": "behavior_node"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"repeat_node": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "repeat"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "params",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "STRING",
"value": ".."
},
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "duration"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "FIELD",
"name": "child",
"content": {
"type": "SYMBOL",
"name": "behavior_node"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"decorator_node": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "decorator",
"content": {
"type": "SYMBOL",
"name": "decorator_keyword"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "params",
"content": {
"type": "SYMBOL",
"name": "decorator_params"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "FIELD",
"name": "child",
"content": {
"type": "SYMBOL",
"name": "behavior_node"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"decorator_keyword": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "invert"
},
{
"type": "STRING",
"value": "retry"
},
{
"type": "STRING",
"value": "timeout"
},
{
"type": "STRING",
"value": "cooldown"
},
{
"type": "STRING",
"value": "succeed_always"
},
{
"type": "STRING",
"value": "fail_always"
}
]
},
"decorator_params": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "STRING",
"value": ".."
},
{
"type": "SYMBOL",
"name": "integer"
}
]
},
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "duration"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"action_node": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "action_param"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "action_param"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"action_param": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "dotted_path"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "value"
}
]
},
{
"type": "SYMBOL",
"name": "value"
}
]
},
"subtree_node": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "include"
},
{
"type": "SYMBOL",
"name": "path"
}
]
},
"institution_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "institution"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
"relationship_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "relationship"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "relationship_body"
}
}
]
},
"relationship_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "participant"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "field"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"participant": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "path"
},
{
"type": "STRING",
"value": "as"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "path"
},
{
"type": "SYMBOL",
"name": "block"
}
]
}
]
},
"location_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "location"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
"species_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "species"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "species_body"
}
}
]
},
"species_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "include"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "species_field"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"species_field": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "range"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "boolean"
},
{
"type": "SYMBOL",
"name": "string"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "prose_block"
}
]
},
"enum_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "enum"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"concept_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "concept"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"sub_concept": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "sub_concept"
},
{
"type": "FIELD",
"name": "parent",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "sub_concept_record_body"
},
{
"type": "SYMBOL",
"name": "sub_concept_enum_body"
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"sub_concept_enum_body": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
"sub_concept_record_body": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "sub_concept_field"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "sub_concept_field"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
"sub_concept_field": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "boolean"
}
]
}
}
]
},
"any_type": {
"type": "STRING",
"value": "any"
},
"concept_comparison": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "concept_comparison"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "variant_pattern"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "variant_pattern"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"variant_pattern": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "field_condition"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "field_condition"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"field_condition": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "any_type"
},
{
"type": "SYMBOL",
"name": "is_condition"
}
]
}
}
]
},
"is_condition": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "is_value"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "or"
},
{
"type": "SYMBOL",
"name": "is_value"
}
]
}
}
]
},
"is_value": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "field",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "is"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "or_expression"
},
{
"type": "SYMBOL",
"name": "and_expression"
},
{
"type": "SYMBOL",
"name": "not_expression"
},
{
"type": "SYMBOL",
"name": "comparison"
},
{
"type": "SYMBOL",
"name": "field_access"
},
{
"type": "SYMBOL",
"name": "primary_expression"
}
]
},
"or_expression": {
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "or"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
"and_expression": {
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "and"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
"not_expression": {
"type": "PREC",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "not"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
"comparison": {
"type": "PREC_LEFT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "is"
},
{
"type": "STRING",
"value": ">"
},
{
"type": "STRING",
"value": ">="
},
{
"type": "STRING",
"value": "<"
},
{
"type": "STRING",
"value": "<="
}
]
}
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
"field_access": {
"type": "PREC_LEFT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
"primary_expression": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "self"
},
{
"type": "STRING",
"value": "other"
},
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "boolean"
},
{
"type": "SYMBOL",
"name": "path"
}
]
},
"identifier": {
"type": "PATTERN",
"value": "[a-zA-Z_][a-zA-Z0-9_]*"
}
},
"extras": [
{
"type": "PATTERN",
"value": "\\s"
},
{
"type": "SYMBOL",
"name": "line_comment"
},
{
"type": "SYMBOL",
"name": "block_comment"
}
],
"conflicts": [
[
"path_segments"
],
[
"sub_concept_enum_body",
"sub_concept_record_body"
],
[
"uses_behaviors"
]
],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": [],
"reserved": {}
}