Advanced Walkthrough

Move from plain structure to AEON-specific power features.

Advanced features.

This page assumes you already understand bindings, containers, comments, and multiline text. It focuses on the features that make AEON more than a generic nested data format.

If you are new to the language, start with the basic walkthrough first and then return here.

Step 1

Custom type labels

Once the built-in shapes are familiar, AEON can carry custom labels defined by a wider ecosystem. The label remains explicit in the document, while the meaning is supplied by higher layers rather than by the core parser.

hi:message = "Hello World!"

Step 2

Null literals

Null values are explicit literals, not a vague absence bucket. A document can say whether something is not set, not applicable, tombstoned, or missing for a custom reason. That gives validators and downstream tools more to work with before runtime materialization. AEON does not let some other datatype secretly carry a null value; the value must be typed as null.

email:null = !notSet
fax:null = !notApplicable
oldRecord:null = !tombstone
review:null = !"awaiting manual review"

This is intentionally invalid: a non-null type binding cannot contain a null literal.

itemCount:number = !notSet

Step 3

NaN and Infinity literals

AEON keeps numeric edge cases visible. NaN and Infinity are their own literal families, so a schema or consumer can allow them deliberately or reject them before they leak into calculations.

reading:nan = NaN
negativeReading:nan = -NaN
limit:infinity = Infinity
floor:infinity = -Infinity

This is intentionally invalid: a number type binding cannot contain a NaN or infinity literal.

itemCount:number = NaN

Step 4

Attributes

Attributes are where AEON begins separating value from surrounding meaning. The bound value remains unchanged, while the attribute set carries side information such as units, intent, or contextual qualifiers. Anonymous children inside lists, tuples, and nodes can carry the same local metadata.

width@{unit:string = "cm"}:number = 33
values:list = [@{unit:string = "cm"}:number = 3]

Step 5

Separator values

Some values are better preserved as visible segments rather than flattened strings. Separator values keep forms such as versions, addresses, and compound identifiers in a structured textual shape.

version:sep[.] = ^1.2.2
server:sep[.] = ^198.0.0.28
dimensions@{unit:string = "px"}:sep[x] = ^300x250

Step 6

Addressing and references

References are one of AEON's central capabilities. Start with clone references: they reuse an earlier value directly while keeping the relationship visible in the document.

source:boolean = true
clone:boolean = ~source

Pointer-style references are different. They preserve an address to a value or structure, which is useful when a downstream consumer needs to keep the link itself rather than just the cloned value.

contact:object = {
  name:string = "Tom"
  occupation:string = "Genius"
}

label:string = ~contact.name // clone
pointer:object = ~>contact // pointer reference

Step 7

Nodes

Start with a simple node tree. Nodes let a document represent ordered, nested structures that are not just key-value objects.

book:node =
  <book (
    <chapter ("Once upon a time")>
    <chapter ("They lived happily ever after, the end")>
  )>

Once that shape is familiar, the same model can carry richer markup-like structures, including attributes on individual nodes.

html:node =
  <html (
    <body (
      <div@{id:string = "message", class:string = "greeting"} (
        "Hello"
        <br>
        "World"
      )>
    )>
  )>

Step 8

Semantic comments

AEON also has structured comment channels. These let a document carry semantic or workflow-related side information without turning those comments into ordinary data bindings.

/# 
  # Publishing note

  This draft is still [* under review]. Before publishing:

  - review totals
  - get sign off
#/

//@ audience("implementers")
//@ status("draft")

Advisory comments can express guidance for downstream readers or tools while still remaining outside the core data model itself.

//? Refresh these totals before publication.
summary:string = "Conventions baseline"
totalConventions:number = 12

Sequence

Advanced AEON becomes easier once the basic document model feels routine.

The intent of this split is to let a new reader become comfortable with ordinary authoring first, then encounter the language features that give AEON its distinct power.