Reference

Keywords

Generated from LANGUAGE.md at bf2cba0, 2026-08-22.

Articles (Context-Dependent)

KeywordUsage
a, anDeclares new variable with type
theReferences existing variable

Statement Starters

KeywordPurpose
PrintOutput
Set, CreateVariable declaration
If, WhenConditional
WhileLoop
ForIteration
ToFunction definition
ReturnReturn value
IncrementAdd 1 to variable
DecrementSubtract 1 from variable
BreakExit loop
ContinueSkip to next iteration
ExitTerminate program with exit code
AppendAdd element to list
Create, Change, Remove/DeleteDirectories, device nodes, symlinks, chdir (see Directories, Mounting, and Process Control)
Mount, Unmount/UmountMount/unmount filesystems
Pivotpivot_root - switch the root filesystem
Executeexecve - replace the process image
Shutdown/Poweroff, Reboot/Restart, Haltreboot(2) - power off/restart/halt the machine
fork, reapProcess control expressions - fork(2)/wait4(2)
Send signalkill(2) - send a signal to a process (child aliases process)

Flag Schema

KeywordPurpose
FlagDeclare a command-line flag schema (a flag called ...)
ParseTrigger command-line flag parsing (Parse flags.)
RequiredMark a flag as required
DefaultSupply a default value for a flag

Connectors

KeywordPurpose
withFunction parameters, function arguments
called, namedVariable naming
of, to, onFunction arguments
andMultiple uses (see below)
orLogical OR
butConditional chaining
thenAfter condition
otherwise, elseAlternative branch
from, toRange bounds

The and Keyword

The word and has multiple context-dependent meanings:

ContextExampleMeaning
Logical operatorif x and y thenBoolean AND of two conditions
Function parameterswith a number called x and a number called ySeparates parameter declarations
Function arguments'add' of 3 and 5Separates argument values
Subject list terminatorx, y, and z are trueFinal item in comma-separated list before are

Disambiguation:

  • When and appears after a comma and before are, it's a list terminator
  • When and appears between two conditions (no comma), it's a logical operator
  • When and follows with/of/to/on, it separates arguments

Reserved Aliases

A few alternate spellings are also reserved because the compiler recognizes them as aliases for canonical keywords:

AliasCanonical keywordContext
msmillisecondsTime duration units (Wait 500 ms.)
messagetextType name (a message called ... is treated as text)
stringtextType name (already listed in the type synonyms)

These cannot be used as variable names. The diagnostic names the spelling you wrote and notes which canonical keyword it aliases — so a number called ms is ... reports 'ms' as an alternate spelling of 'milliseconds', not the internal canonical name.

Every keyword listed in the tables above is likewise reserved as a variable name. Two that are easy to hit by accident are worth calling out: the flag-schema keyword flag (a flag called ...) and the property keyword empty (x's empty). Writing a number called flag is 1. or a number called empty is 1. is rejected with the same "reserved keyword" diagnostic. (As with any reserved word, you can still quote the name — 'flag', 'empty' — if you genuinely need it.)

Two classes of special word

Not every word with a special meaning is reserved. Vox distinguishes:

  • Reserved keywords — banned as bare names everywhere, because they would be ambiguous anywhere: statement starters, operators (times, add), type names, connectors.
  • Contextual keywords — claimed only in the position where they mean something, and ordinary identifiers everywhere else: start/begin/ stop/finish for timers, send for signals, waiting in without waiting, available in is available, the things words, the property word name, and the property word count — claimed after a possessive marker and in the the argument count / the environment variable count phrases, so a number called count is 0. compiles while arguments's count keeps its meaning. The same treatment extends to the whole possessive/phrase family: capacity (also the with capacity N / of capacity N buffer phrase), raw, all (also the all the numbers from/between … range), first, last, second (also the Wait 1 second. unit — Set second to 1. Wait second seconds. compiles and waits one second), size and its synonym length (also with size N and N bytes in size), and version (the Library <name> version "…" and see <lib> version "…" headers). Each is a bare variable name everywhere except its one fixed grammatical position; arguments's first and a number called first is 0. both work in the same program.

The test for which class a word belongs in: if every position where the word means something is grammatically identifiable, it is contextual; only a word that would be ambiguous in ordinary positions is reserved.

Contextual Keywords (Things)

Three words the things feature claims only inside their construct, and treats as ordinary identifiers everywhere else — the same treatment send/begin/stop get for timers. None of them is a reserved variable name, so a number called thing is 1. and To do. (a function named do) both compile.

WordClaimed inElsewhere
thingA thing called <name> has ... (a definition)ordinary identifier
hasthe verb of a thing definitionordinary identifier
doTo do the <type>'s <member> (a member definition)ordinary identifier

A fourth, the, gains a second reading in this company: in To do the point's 'placed at' it pairs with a known identifier (the type), where a point's 'placed at' calls a maker that brings a new point into being. See the article rule.