Added grammar rules for v0.3 type system declarations: - concept_declaration: semicolon-terminated base type - sub_concept: enum and record forms with dot notation - concept_comparison: nested pattern matching with variant_pattern - any_type: named node for the 'any' keyword - template species extension: optional ': Species' syntax Updated query files: - highlights.scm: new keywords and named field highlights - outline.scm: concept/sub_concept/concept_comparison in outline - indents.scm: indentation for new brace-delimited nodes Fixed pre-existing query issues: - Replaced invalid repeat_node reference with decorator_node - Removed invalid '?' punctuation reference Added comprehensive test corpus (type_system.txt) covering: - concept declaration (simple and multiple) - sub_concept enum and record forms - concept_comparison with any/is conditions - template with species extension - full combined example
161 lines
2.9 KiB
Scheme
161 lines
2.9 KiB
Scheme
; Highlights query for Storybook DSL
|
|
; Maps grammar nodes to standard highlight groups
|
|
|
|
; Comments
|
|
(line_comment) @comment.line
|
|
(block_comment) @comment.block
|
|
|
|
; Keywords - Declaration keywords
|
|
[
|
|
"character"
|
|
"template"
|
|
"life_arc"
|
|
"schedule"
|
|
"behavior"
|
|
"institution"
|
|
"relationship"
|
|
"location"
|
|
"species"
|
|
"enum"
|
|
"state"
|
|
"concept"
|
|
"sub_concept"
|
|
"concept_comparison"
|
|
] @keyword.declaration
|
|
|
|
; Keywords - Control flow and modifiers
|
|
[
|
|
"and"
|
|
"or"
|
|
"not"
|
|
"on"
|
|
"enter"
|
|
"strict"
|
|
] @keyword.control
|
|
|
|
; Keywords - Import/module
|
|
[
|
|
"use"
|
|
"include"
|
|
"from"
|
|
] @keyword.import
|
|
|
|
; Keywords - Special
|
|
[
|
|
"as"
|
|
"self"
|
|
"other"
|
|
"remove"
|
|
"append"
|
|
"is"
|
|
"any"
|
|
] @keyword.special
|
|
|
|
; Boolean literals
|
|
[
|
|
"true"
|
|
"false"
|
|
] @constant.builtin.boolean
|
|
|
|
; Numbers
|
|
(integer) @constant.numeric.integer
|
|
(float) @constant.numeric.float
|
|
(time) @constant.numeric.time
|
|
(duration) @constant.numeric.duration
|
|
|
|
; Strings
|
|
(string) @string
|
|
|
|
; Identifiers in different contexts
|
|
(character name: (identifier) @type.character)
|
|
(template name: (identifier) @type.template)
|
|
(life_arc name: (identifier) @type.life_arc)
|
|
(schedule name: (identifier) @type.schedule)
|
|
(behavior name: (identifier) @type.behavior)
|
|
(institution name: (identifier) @type.institution)
|
|
(relationship name: (identifier) @type.relationship)
|
|
(location name: (identifier) @type.location)
|
|
(species name: (identifier) @type.species)
|
|
(enum_declaration name: (identifier) @type.enum)
|
|
(arc_state name: (identifier) @type.state)
|
|
(concept_declaration name: (identifier) @type.concept)
|
|
(sub_concept parent: (identifier) @type.concept)
|
|
(sub_concept name: (identifier) @type.sub_concept)
|
|
(concept_comparison name: (identifier) @type.concept_comparison)
|
|
(variant_pattern name: (identifier) @type.variant)
|
|
(template species: (identifier) @type.builtin)
|
|
|
|
; Field names
|
|
(field name: (dotted_path) @property)
|
|
(sub_concept_field name: (identifier) @property)
|
|
|
|
; Species reference
|
|
(character species: (identifier) @type.builtin)
|
|
|
|
; Paths and identifiers
|
|
(path) @namespace
|
|
(identifier) @variable
|
|
|
|
; Prose blocks - tag and content
|
|
(prose_block tag: (identifier) @tag)
|
|
(prose_block marker: (prose_marker) @punctuation.delimiter)
|
|
(prose_content) @markup.raw
|
|
|
|
; Operators
|
|
[
|
|
">"
|
|
">="
|
|
"<"
|
|
"<="
|
|
"->"
|
|
"is"
|
|
] @operator
|
|
|
|
; Punctuation
|
|
[
|
|
"{"
|
|
"}"
|
|
] @punctuation.bracket
|
|
|
|
[
|
|
"("
|
|
")"
|
|
] @punctuation.bracket
|
|
|
|
[
|
|
"["
|
|
"]"
|
|
] @punctuation.bracket
|
|
|
|
[
|
|
":"
|
|
"::"
|
|
";"
|
|
","
|
|
"."
|
|
".."
|
|
"*"
|
|
"@"
|
|
] @punctuation.delimiter
|
|
|
|
; Behavior tree nodes
|
|
(action_node (identifier) @function.action)
|
|
|
|
; Transitions
|
|
(transition "->" @operator.transition)
|
|
(transition target: (identifier) @type.state)
|
|
|
|
; Schedule blocks
|
|
(schedule_block activity: (identifier) @function.activity)
|
|
|
|
; Override operations
|
|
(override "@" @keyword.override)
|
|
(override_op "remove" @keyword.override)
|
|
(override_op "append" @keyword.override)
|
|
|
|
; Template clause
|
|
(template_clause "from" @keyword.import)
|
|
|
|
; Error handling
|
|
(ERROR) @error
|