Phase 6e: unify builtin naming (loaders domain-first, set_reg)
Fixed the naming inconsistencies the cohesion audit flagged, converging on the domain-first style the bulk of the surface already uses (ui_*, text_*, rng_*, font_load, image_load): - load_png -> png_load (asset loaders were split: font_load/image_load - load_sprites -> sprites_load were domain-first, load_* were verb-first) - setreg -> set_reg (missing underscore vs ui_set_int/ui_set_text) Game builtins resolve to their `rt_` runtime function, so the renames are in runtime/native (rt_png_load, rt_sprites_load, rt_set_reg) plus the ~100 example call sites; `become` lowering in emit_machine now emits @fn_rt_set_reg. Purely a surface rename — every renamed call maps to the same runtime symbol, so behavior and golden renders are byte-identical. Vocabulary + docs updated (ludic_syntax.h, grammar, LudicTokens.kt, LANGUAGE.md, README, SYNTAX-REDESIGN). Reseeded; C-free fixpoint holds; goldens identical; 17/17; vocab clean. Left as-is: os_argc/os_arg (compiler-internal intrinsics, already namespaced and consistent with each other; renaming would need a bootstrap dance for little gain). reg/set_reg keep the getter-bare/setter-set_ shape ui_focused/ui_set_int already use. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
c5bd50d544
commit
cc701013f5
16 changed files with 122 additions and 122 deletions
12
LANGUAGE.md
12
LANGUAGE.md
|
|
@ -121,7 +121,7 @@ handlers:
|
|||
|
||||
```ludic
|
||||
handler Boot phase Start {
|
||||
setreg(R_FONT, font_load("…Arial.ttf"))
|
||||
set_reg(R_FONT, font_load("…Arial.ttf"))
|
||||
ui_build() # construct the tree (loads skins/images)
|
||||
ui_open(UI_MainMenu) # make it active, focus the first button
|
||||
}
|
||||
|
|
@ -519,7 +519,7 @@ machine R_PHASE {
|
|||
States **number themselves by declaration order** (`KnightMenu` is `0`,
|
||||
`KnightResolve` is `1`, …) — no magic constants. (An explicit `state Name = expr`
|
||||
is still accepted when a state needs a specific value.) A `machine <reg>` reads
|
||||
`reg(<reg>)` to pick the state; `become Name` compiles to `setreg(<reg>, <Name's
|
||||
`reg(<reg>)` to pick the state; `become Name` compiles to `set_reg(<reg>, <Name's
|
||||
value>)`. Both lower to plain branches (and `match` runs on the native LLVM
|
||||
backend too).
|
||||
|
||||
|
|
@ -538,7 +538,7 @@ if reg(R_MODE) == Mode.Battle { … }
|
|||
|
||||
A variant is a **compile-time `int`** accessed as `Enum.Variant` (`Action.Guard`
|
||||
is `1`), numbered from `0` by declaration order, so it works anywhere an int does
|
||||
— `match` patterns, comparisons, `setreg`. Enums are a naming layer over `int`:
|
||||
— `match` patterns, comparisons, `set_reg`. Enums are a naming layer over `int`:
|
||||
there is no distinct enum runtime type yet, so an enum value lives in an ordinary
|
||||
`int` or register (and is saved with it). See `examples/chronorift/combat.ludic`,
|
||||
whose battle menus dispatch on `KnightAct`/`MageAct` instead of `0..3`.
|
||||
|
|
@ -571,9 +571,9 @@ ints (`0xff8800`).
|
|||
# UI ui_build() ui_open(id) ui_tick(key) ui_render()
|
||||
# ui_clicked(id)->bool ui_set_text(id,str) ui_set_int(id,n)
|
||||
# ui_focus(id) ui_focused()->int ui_visible(id,bool)
|
||||
# assets load_png(path)->id (decodes a PNG; returns a 16x16 sprite id)
|
||||
# assets png_load(path)->id (decodes a PNG; returns a 16x16 sprite id)
|
||||
# input key()->int (current frame's key code, 0 if none)
|
||||
# state reg(i)->int setreg(i,v) (64 integer resources shared by handlers)
|
||||
# state reg(i)->int set_reg(i,v) (64 integer resources shared by handlers)
|
||||
# entity self()->entity
|
||||
# save save() load()->bool (binary snapshot of the whole ECS World)
|
||||
# control quit() print_int(i)
|
||||
|
|
@ -670,7 +670,7 @@ self-hosting; their lowerings are in
|
|||
> `layer`, and the `on enter` / `on exit` hooks are a design target: the
|
||||
> compiler has no `scene` declaration and [`examples/scenes.ludic`](examples/scenes.ludic)
|
||||
> does not compile today. Games
|
||||
> that need mutually-exclusive states use a mode register (`reg`/`setreg`) with a
|
||||
> that need mutually-exclusive states use a mode register (`reg`/`set_reg`) with a
|
||||
> `machine`, as `examples/chronorift` does. This section describes the intended
|
||||
> syntax for when scene support lands.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue