The five meta-characters
The whole grammar fits in five symbols. Memorize them once and you are done.
Anglish is built around exactly five meta-characters. They mark the kind of thing you are declaring or referencing. Once you know them, every line of Anglish you’ll ever read parses itself.
| Symbol | Name | What it declares |
|---|---|---|
@ | Space | A bounded context where work happens — UI, IO, data, logic, or an agentic router. |
# | Agent | A reasoning unit (deterministic or AI-flavoured) that runs inside a space. |
$ | Task | A named operation — either built into a space type or author-defined. |
% | Data resource | A structured object that flows between spaces and tasks. |
= | Path | A connection between two spaces. |
Plus three syntactic markers that are not themselves meta-characters but show up just as often:
>>>at the start of a line — a vibe line. One or more contiguous vibe lines form a vibe block.>alone on a line — a continuation line. Keeps the current declaration open for more blocks.- A blank line — closes the current declaration (and any nested ones).
What a declaration looks like
Every declaration has the shape:
<meta-char> name [: TYPE] [(parameters)]
>>> vibe block describing intent
>>> more prose if you need it.
>
optional subordinate declarations
Concretely:
@checkout:UI
>>> A web-based checkout form.
>>> Bind inputs to %checkoutForm.
>
$validateForm(in=%checkoutForm)
>>> Validates required fields and emits %validationErrors.
Read it as: “There is a UI space called checkout whose intent is on the next two lines. Inside it, there is a task validateForm that takes %checkoutForm and validates it.”
Inline references
Once a thing is declared, you can refer to it anywhere — in a header, in a vibe line, in another declaration’s parameters — by writing its meta-character and name:
@checkoutreferences the space.$validateFormreferences the task.%checkoutFormreferences the data resource.=submitPathwould reference a path.
The compiler resolves these by name. If you misspell, it fails at compile time, not at the third pass of vibe-coding.
Why so few
Five meta-characters seems thin. That’s the point: the smaller the grammar, the less Anglish gets in the way of the prose. Vibe lines do the heavy lifting; meta-characters do just enough to make the structure machine-readable.
Next chapter: the five space types.