Skip to content

1. Notation ​

1.1 Conformance Keywords ​

The key words MUST, MUST NOT, SHOULD, SHOULD NOT, and MAY are to be interpreted as requirement levels:

  1. MUST: absolute requirement for conforming implementations.
  2. MUST NOT: absolute prohibition.
  3. SHOULD: recommended behavior; deviations require explicit rationale.
  4. SHOULD NOT: discouraged behavior; exceptions require explicit rationale.
  5. MAY: optional behavior.

1.2 Grammar Notation ​

Unless otherwise stated, grammar snippets use a compact EBNF-like notation:

text
RuleName   := production
production := term { term } [ term ] (alt1 | alt2)

Notation elements:

  1. := introduces a definition.
  2. { ... } means zero or more repetitions.
  3. [ ... ] means optional.
  4. (a | b) means alternatives.
  5. Quoted text (for example "protocol") denotes literal tokens.

Source-surface grammar is specified in Chapter 4. Implementation grammar files and parser tests are conformance evidence for that surface, not independent language definitions.

1.3 Character and Text Notation ​

Unless explicitly stated:

  1. Source text is UTF-8 encoded.
  2. Keyword matching is case-sensitive.
  3. LF denotes line feed (\n).
  4. CRLF is accepted where line endings are environment-dependent.

1.4 Identifier Meta-Notation ​

Meta-symbol names:

  1. IDENTIFIER: user-defined name token.
  2. STRING: double-quoted string literal.
  3. BOOLEAN: true or false.
  4. QUANTITY: numeric literal optionally followed by a unit suffix.

Concrete lexical definitions are specified in Chapter 2.

1.5 Examples and Non-Normative Blocks ​

Unless a block is explicitly labeled as requirement text:

  1. Code examples are explanatory only.
  2. Notes and rationale paragraphs are non-normative.
  3. Requirement statements are introduced using conformance keywords.

Culsma Language Reference · CC BY 4.0