Phase 6a: rename core vocabulary (game/main/component/archetype/system)

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>
This commit is contained in:
Orkun ÇAKILKAYA 2026-08-27 18:22:13 +03:00
parent 3227e1e1d3
commit 42f955fd22
35 changed files with 2632 additions and 2646 deletions

View file

@ -4,16 +4,16 @@
# LANGUAGE.md §"Scenes & layers"). It is deliberately excluded from test.sh.
# Games that need scene-like states use a mode register + `machine` today, as
# examples/chronorift does.
game SceneDemo {
program SceneDemo {
const R_N: int = 0
system Boot phase Start { setreg(R_N, 0); print_int(1000) }
handler Boot phase Start { setreg(R_N, 0); print_int(1000) }
scene Title start {
on enter { print_int(1) }
on exit { print_int(2) }
layer Main {
system Tick phase Update {
handler Tick phase Update {
setreg(R_N, reg(R_N) + 1)
print_int(100 + reg(R_N))
if reg(R_N) >= 2 { enter Play }
@ -25,14 +25,14 @@ game SceneDemo {
on enter { print_int(3); setreg(R_N, 0) }
on exit { print_int(4) }
layer World {
system Step phase Update {
handler Step phase Update {
setreg(R_N, reg(R_N) + 1)
print_int(200 + reg(R_N))
if reg(R_N) >= 2 { quit() }
}
}
layer Hud {
system Draw phase Render { print_int(900) }
handler Draw phase Render { print_int(900) }
}
}
}