game/module -> program, main -> entry, component -> property, archetype -> model, system -> handler. Done via a transitional self-hosting bootstrap: parser accepts both -> reseed -> compiler source moved to new keywords + parser tightened to new-only -> reseed (fixpoint holds). Old keywords now rejected. Token-safe corpus migration (tools/ludic-tools/rename_kw.c) leaves the LLVM @main/entry: labels in emit strings untouched; goldens byte-identical. Editor vocab (header/JetBrains/TextMate/emacs), check-docs wrapper, and doc fences updated; error string 'unknown component' -> 'unknown property'. test.sh 14/14, test-tools 28/0, check-vocabulary green. (Doc prose pass to follow.) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
20 lines
449 B
Text
20 lines
449 B
Text
program T {
|
|
struct P { x: int = 0, y: int = 7, next: P }
|
|
fn bump(p: P) -> void { p.x = p.x + 100 }
|
|
entry {
|
|
let a = new P
|
|
print_int(a.y) # 7 default
|
|
a.x = 5
|
|
let b = a
|
|
b.x = 9
|
|
print_int(a.x) # 9 (reference)
|
|
bump(a)
|
|
print_int(a.x) # 109
|
|
let c = new P
|
|
c.x = 2
|
|
a.next = c
|
|
print_int(a.next.x) # 2 chained
|
|
a.next.x = 42
|
|
print_int(c.x) # 42
|
|
}
|
|
}
|