ludic/tools/ludic-cli
Orkuncakilkaya 2ad6edaae3 ludic syntax, and ludic-dev syntax: every grammar written from the compiler's vocabulary and checked against it
`ludic syntax [--json] [-o FILE]` prints what `ludicc --emit-syntax` does (a line
per entry, or the JSON). `ludic-dev syntax` writes, between "ludic-dev syntax:
begin" / "end" lines, the keyword, type, phase and attribute tables of
ludic_syntax.h, LudicVocabulary's sets (JetBrains), ludic-mode.el's lists and the
language server's word tests (is_keyword_word and the rest; is_contextual_word is
every word the parser does not reserve, and every declaring or modifying one),
and every TextMate pattern marked "comment": "ludic-dev syntax: <group>" (shared
and the VS Code copy). The grammars gain module uses port bind action reducer
dispatch registry def open component prop view alias friend unsafe numbers of as
from mut system; import and extern colour as declarations; the phase clause
knows Overlay; the bitwise pattern matches | and ^ on their own again.

`ludic-dev syntax --check` - and check-vocabulary, whose old parser comparison it
replaces, and the regression suite (syntax_cases, one line per file) - fails when
a written list is behind, when a grammar lacks a keyword, type or phase, when
docs/language has no page for a keyword, type, phase or attribute, or when the
parser (a scan of selfhost/frontend: is_id / text == words, a == / ann ==
attributes) tests a word or reads an attribute vocab.ludic lacks, or the reverse.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 23:59:30 +03:00
..
assets.ludic feat(windows): the ludic CLI and ludic bundle on Windows 2026-09-13 03:01:33 +03:00
build.ludic Build.schema_hash(): FNV-1a 64 of the program's own schema (the bytes ludic schema prints), worked out only when a program names it, 0 under ludicc --release, which ludic bundle now passes (Mac and Windows); reseeded 2026-09-29 19:05:28 +03:00
bundle.ludic Build.schema_hash(): FNV-1a 64 of the program's own schema (the bytes ludic schema prints), worked out only when a program names it, 0 under ludicc --release, which ludic bundle now passes (Mac and Windows); reseeded 2026-09-29 19:05:28 +03:00
checks.ludic ludic syntax, and ludic-dev syntax: every grammar written from the compiler's vocabulary and checked against it 2026-09-29 23:59:30 +03:00
deps.ludic ludic deps: widest_reach and widest_write_reach leave out the ROOTS - a function that reads fn values out of a table (a step list's walker, a registry of systems) reaches every state by definition - and count every other function through its calls only, not through a dispatcher nor a fn value it writes into a list; the roots are listed on a line of their own and marked in --reach / --wreach; reseeded 2026-09-29 21:51:50 +03:00
dev.ludic ludic syntax, and ludic-dev syntax: every grammar written from the compiler's vocabulary and checked against it 2026-09-29 23:59:30 +03:00
docgen.ludic feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00
docgen_check.ludic refactor(cli)!: split the contributor tool out of the ludic CLI 2026-09-05 23:15:12 +03:00
docgen_gen.ludic feat(windows): the ludic CLI and ludic bundle on Windows 2026-09-13 03:01:33 +03:00
forgejo.ludic feat(windows): the ludic CLI and ludic bundle on Windows 2026-09-13 03:01:33 +03:00
glgen.ludic feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00
json.ludic feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00
lsp_test.ludic feat(tooling): JetBrains IDE support, LSP navigation, barrel imports, package scripts and hooks 2026-09-16 16:13:31 +03:00
main.ludic ludic syntax, and ludic-dev syntax: every grammar written from the compiler's vocabulary and checked against it 2026-09-29 23:59:30 +03:00
migrate.ludic feat(migrate): 0.R5 - ludic migrate state --tighten takes mut off every state parameter nothing down the chain writes; --root DIR lets the edits reach a directory without running its programs; a write through a local holding part of a mut state counts as a write to it 2026-09-27 00:20:44 +03:00
pack.ludic docs(packages): an index of the packages; the pack skips what is not a package directory 2026-09-25 07:22:05 +03:00
packignore.ludic feat(pack): .packignore, so a pack root can leave build artefacts out 2026-09-11 18:29:32 +03:00
pkg.ludic feat(tooling): JetBrains IDE support, LSP navigation, barrel imports, package scripts and hooks 2026-09-16 16:13:31 +03:00
pkg_test.ludic wip(0.S3): ui blocks, scene on enter/exit, hooks, machines over a state's field, namespace and engine-system injection; a reference out of a read-only state or a module let is read-only; deps counts writes into another module's state; the rejected examples hold states 2026-09-25 14:49:03 +03:00
prelude.ludic feat(test): ludic test -j N runs tests side by side 2026-09-25 11:38:09 +03:00
project.ludic ludic build --check reads the maps only for the package's entry - a partial program (a unit test, a molecule, a bake's runner) lacks the game's constants and cannot judge them; --maps reads them anyway, --no-maps never; ludicc unchanged 2026-09-29 22:14:53 +03:00
release.ludic ludic ui-preview: ludic.ui components previewed for a studio over stdio (R5) 2026-09-29 19:53:26 +03:00
schema.ludic schema: ludicc --emit-schema / ludic schema, --check --diagnostics=json, and editor attributes 2026-09-29 18:06:54 +03:00
scripts.ludic schema: ludicc --emit-schema / ludic schema, --check --diagnostics=json, and editor attributes 2026-09-29 18:06:54 +03:00
selfhost.ludic ludicc --emit-syntax: the language's vocabulary as one table beside the parser 2026-09-29 23:59:02 +03:00
selfhost_test.ludic wip(0.S1, 0.S2): state records, mut and read-only state parameters, entry injection, module var refused; ludic migrate state 2026-09-25 13:45:09 +03:00
shaders.ludic render3d: a renderer that cannot draw says so and stops - LUDIC_HOME's leading ~ expanded (an unexpanded one left a run without shaders, logging 27 missing variants and drawing on), the SPIR-V manifest ends with E <count> and a cut or miscounted one is refused, and every such failure is a fault: r3d_open / r3d_load_step fail on it, r3d_fault() / r3d_fault_exit(code) for the game; tests/manifest_test 2026-09-29 22:12:39 +03:00
split.ludic ludic build on every core: the IR split with llvm-split and compiled by a clang per part at once 2026-09-29 17:12:27 +03:00
syntax_cli.ludic ludic syntax, and ludic-dev syntax: every grammar written from the compiler's vocabulary and checked against it 2026-09-29 23:59:30 +03:00
syntax_gen.ludic ludic syntax, and ludic-dev syntax: every grammar written from the compiler's vocabulary and checked against it 2026-09-29 23:59:30 +03:00
test.ludic ludic syntax, and ludic-dev syntax: every grammar written from the compiler's vocabulary and checked against it 2026-09-29 23:59:30 +03:00
testpar.ludic feat(pkg): phase 15 - a package can carry a native library 2026-09-26 23:35:45 +03:00
toolchain.ludic ludic ui-preview: ludic.ui components previewed for a studio over stdio (R5) 2026-09-29 19:53:26 +03:00
tools.ludic feat(tools): L10 ludic-fmt enforces a project's style 2026-09-24 14:38:35 +03:00
ui_preview.ludic ludic ui-preview: ludic.ui components previewed for a studio over stdio (R5) 2026-09-29 19:53:26 +03:00
vkgen.ludic feat(lang): L7 memory is safe unless it says unsafe 2026-09-24 12:53:27 +03:00