This page is intentionally dry. It is the reference list: syntax, accepted values, alternative type names, and reserved names. Use the value types page when you want the explanation behind special forms.

String

Syntax
"..." or '...' or `...`
Accepted values
Any quoted text value.
Alternative type names
string
Reserved names
None

Example

title:string = "Daily note"
Learn moreLearn less

Escapes and quoting

Strings are best for compact text. Use escapes when the delimiter or a control character must live inside the value.

The spec distinguishes ordinary quoted strings from raw backtick strings. Quoted strings support Unicode escapes, but malformed escape sequences fail closed.

Use trimtick/prose when the text is naturally multiline; it keeps source readable without a wall of escape sequences.

quote:string = "She said \"AEON\"."
path:string = "C:\\notes\\today"
line:string = "first\nsecond"

Trimtick / prose

Syntax
> `...` through >>>> `...`
Accepted values
Multiline text with trimming behavior for prose-like content.
Alternative type names
trimtick; prose is the common prose label
Reserved names
prose

Example

body:prose = >`
  Hello
  from AEON
`
Learn moreLearn less

Marker width

Trimticks are multiline strings with indentation trimming. The number of leading > markers gives tools a stable tab width while normalizing indentation.

For example, >>>> treats a tab as four spaces before common indentation is trimmed. The marker must be contiguous, though spaces before the backtick opener are allowed.

body:prose = >>>>`
	Indented with a tab
	and normalized as four spaces.
`

Number

Syntax
42, 3.14, .5, 1e3, 1_000
Accepted values
Finite numeric literals.
Alternative type names
number, n
Reserved names
int, uint, int8, int16, int32, int64, uint8, uint16, uint32, uint64, float, float32, float64

Example

port:number = 8080
Learn moreLearn less

Finite numbers

Numbers cover finite integer and decimal forms. Numeric width and precision are not Core-level semantics.

Underscores are valid only between digits. Canonicalization removes underscore separators and normalizes leading-dot decimals to an explicit zero.

count:number = 42
ratio:number = 3.14
large:number = 1e3
readable:number = 1_000

NaN

Syntax
NaN or -NaN
Accepted values
Explicit not-a-number values.
Alternative type names
nan
Reserved names
None

Example

reading:nan = NaN
Learn moreLearn less

Explicit edge case

NaN is not an ordinary number. Accepted surface forms are exactly NaN and -NaN; +NaN and lowercase aliases are invalid.

Infinity

Syntax
Infinity or -Infinity
Accepted values
Explicit infinite numeric edge values.
Alternative type names
infinity
Reserved names
None

Example

upperBound:infinity = Infinity
Learn moreLearn less

Explicit bounds

Infinity and -Infinity are useful for open-ended bounds, but remain distinct from finite numbers. Strict JSON-profile output must fail closed rather than silently rewriting them.

Boolean

Syntax
true or false
Accepted values
Truth values.
Alternative type names
boolean, bool
Reserved names
None

Example

published:boolean = true
Learn moreLearn less

Narrow truth

Boolean values are lowercase true and false. TRUE is not a boolean token, and quoted "true" is still a string.

Toggle

Syntax
yes, no, on, off
Accepted values
Human-readable toggles where the words matter.
Alternative type names
toggle
Reserved names
None

Example

enabled:toggle = on
Learn moreLearn less

Words carry intent

On/off often reads like operational state. Yes/no often reads like a human answer. AES preserves the lexical value, while JSON materialization maps yes/on to true and no/off to false.

Null

Syntax
!none, !notSet, !notApplicable, !tombstone, !"reason"
Accepted values
Absence with an explicit reason.
Alternative type names
null
Reserved names
!none, !notSet, !notApplicable, !tombstone

Example

middleName:null = !notApplicable
Learn moreLearn less

Absence has reasons

Use reserved null reasons when they fit, and custom quoted reasons when absence has domain-specific meaning.

Custom reasons must decode to a non-empty, non-whitespace string and must not collide with reserved sentinel names.

middleName:null = !none
phone:null = !notSet
fax:null = !notApplicable
oldId:null = !tombstone
review:null = !"awaiting manual review"

Hex

Syntax
#ff00aa
Accepted values
Hexadecimal byte/color-like literals.
Alternative type names
hex
Reserved names
None

Example

brandColor:hex = #ff00aa
Learn moreLearn less

Prefix plus datatype

The # prefix identifies the literal family. The surfaced value is payload-only, while raw preserves the source token. Underscores are visual spacing only and valid only between hex digits.

Radix

Syntax
%1011 with a separator such as :radix[2]
Accepted values
Digits interpreted in an explicit base.
Alternative type names
radix
Reserved names
radix2, radix6, radix8, radix12

Example

bits:radix[2] = %1011
Learn moreLearn less

Base-aware digits

The % prefix carries the digits, while bracket metadata declares the base. Core accepts bases 2 through 64, but lexical acceptance is still separate from base-specific digit validity.

Encoding

Syntax
$QmFzZTY0IQ==
Accepted values
Encoded inline payloads.
Alternative type names
encoding
Reserved names
base64, embed, inline

Example

payload:base64 = $QmFzZTY0IQ==
Learn moreLearn less

Encoded payloads

The $ prefix makes the payload shape visible. Core accepts standard and URL-safe base64 alphabets; canonical encoding prefers URL-safe output and strips trailing padding.

Date

Syntax
2026-05-05
Accepted values
Calendar dates without a time of day.
Alternative type names
date
Reserved names
None

Example

shipDate:date = 2026-05-05
Learn moreLearn less

Calendar only

A date literal is a calendar date without a time of day. Core recognition includes intrinsic calendar validation, including leap-year handling.

Time

Syntax
09:, 09:30, 09:30Z, 09:30+10:00
Accepted values
Times of day with optional UTC or offset information.
Alternative type names
time
Reserved names
None

Example

opensAt:time = 09:30
Learn moreLearn less

Time of day

A time may be local, UTC, or offset-bearing. Core allows reduced-precision forms such as 09: and 09:30Z, but rejects out-of-range clock values.

DateTime

Syntax
2026-05-05T09:30:00Z
Accepted values
Combined date and time values.
Alternative type names
datetime
Reserved names
zrut for zoned round-trip values

Example

published:datetime = 2026-05-05T09:30:00Z
Learn moreLearn less

Instant and zone authority

A datetime can express an instant. ZRUT adds a named local time authority when the zone itself is part of the meaning. Uppercase Z is the UTC marker; lowercase z is rejected as a temporal literal marker.

published:datetime = 2026-05-05T09:30:00Z
localPublication:zrut = 2026-05-05T09:30:00Z&Australia/Melbourne

Separator

Syntax
^300x250 with a separator such as :sep[x]
Accepted values
Separator-shaped literals where the separator has meaning.
Alternative type names
sep
Reserved names
kadot

Example

dimensions:sep[x] = ^300x250
Learn moreLearn less

Separator grammar

Use sep[...] when the separator character is part of the value grammar. Separator specs must name exactly one allowed character, though whitespace may appear around it inside brackets.

Quoted "..." segments inside separator payloads use ordinary AEON string lexical rules, so content like labels or spaces can be carried without becoming raw separator syntax.

Kadot is a reserved subset name for dot-separated numeral lists, but Core only enforces the separator literal family; stricter kadot shape validation belongs to schema/profile layers.

dimensions:sep[x] = ^300x250
triple:sep[x][y][z] = ^100x200y300z
row:dsv = ^"Name"."Address"."phone"."email"
ip:kadot = ^198.0.126.255

Object

Syntax
{ key:type = value }
Accepted values
Named bindings grouped together.
Alternative type names
object, obj, o
Reserved names
envelope

Example

contact:object = {
  name:string = "Bob"
}
Learn moreLearn less

Named structure

Objects create member paths and are the natural shape for records, configuration, and grouped claims. Reserved aliases such as obj, o, and envelope perform the same Core compatibility check.

List

Syntax
[1, 2, 3] or [:number = 3]
Accepted values
Ordered repeated values.
Alternative type names
list
Reserved names
None

Example

scores:list<number> = [3, 4, 5]
Learn moreLearn less

Order and duplicates

Lists preserve order and duplicates. Generic args are optional syntax and are not enforced by Core semantic typing rules.

Tuple

Syntax
(12, 42)
Accepted values
Fixed positions where each slot has a role.
Alternative type names
tuple
Reserved names
None

Example

point:tuple<number> = (12, 42)
Learn moreLearn less

Position is meaning

Use tuples when each position has a role and the length is part of the contract. AEON Core preserves tuple/list distinction in AST and AES; they must not collapse into one sequence kind.

Node

Syntax
<tag("text")>
Accepted values
Tagged tree-shaped values.
Alternative type names
node
Reserved names
None

Example

page:node = <section(
  <title("Hello")>
)>
Learn moreLearn less

Tagged tree values

Nodes carry tagged children and attributes. Empty-node shorthand <tag> is equivalent to <tag()>, and node children use indexed canonical paths rather than becoming top-level bindings.

Clone reference

Syntax
~path.to.value
Accepted values
Copy-intent reference to another value.
Alternative type names
Reference form, not a datatype label
Reserved names
None

Example

name:string = "Alice"
displayName:string = ~name
Learn moreLearn less

Copy intent

Clone references say that this value should use the value at another path. Missing, forward, and self references are illegal in Core, before AEOS gets involved.

Pointer reference

Syntax
~>path.to.value
Accepted values
Pointer-intent reference to another value.
Alternative type names
Reference form, not a datatype label
Reserved names
None

Example

contact:object = {
  name:string = "Bob"
}
primaryContact:object = ~>contact
Learn moreLearn less

Pointer intent

Pointer references preserve alias/pointer intent in AST and AES. JSON interoperability may lose that identity distinction once references are materialized.

View as Markdown