Starting with @snowyu’s proposal I infer some design principles:
- This language is designed to be easy to render using existing Markdown, YAML, and syntax highlighters.
- The language should break out to TypeScript that is evaluated in the scope of a global object that represents all of the play state.
- The Markdown script is a Markdown subset that uses inline backtick expressions to break out to an annotation language that carry semantics.
- The annotation language embeds the TypeScript grammar for evaluating expressions.
My iteration on this design adds some detail:
- We use a Markdown variant that forbids arbitrary HTML, adds semantics to list item notation, and uses backticks for annotations.