; SPDX-License-Identifier: MPL-2.0 ; english.vla - the 40 vocabulary rules from SENTENCES.md, ; each shipped with its proof: a "test:" line the loader verifies ; after registration. A vocabulary does not load unless its tests ; pass, so this file is its own regression suite. ; ; Load with: ; EnglishResetGrammar ; EnglishLoadVocabulary ThisWorkbook.Path & "\english.vla" ; Debug.Print EnglishLintReport() ; ; References: bare for cells, columns, sheets, AND ranges (cell B2, ; column C, sheet Data, range A1:C50); quotes only when a reference ; contains spaces ("Q1 Data") or when creating a sheet whose name's ; case matters. Bare references lowercase in transit. ; ; G1: patterns may use alternation slots and optional literals. ; {d:left|right} matches one of the words; the MATCHED word binds ; into the template ({d} -> left), so xl{d} becomes ; xlleft - one rule where surface spellings differ. ; [key] optional literal: matched when present, free when ; absent, never fails the rule. One word only; for ; a multi-word spelling, compose the two features - ; "at|under [key]" accepts at / at key / under / ; under key, which is exactly how Store reads below. ; into|in G10: a BARE alternation - no braces, no name - ; matches one branch and binds nothing. The rule ; is now simple: BRACES CAPTURE (the matched word ; travels into the template, as in {d:left|right} ; -> xl{d}); bare words just match. Bare tokens ; may carry / surfaces too (sort/ed), and an ; optional may hold an alternation ([in|into]). ; center/ed G1.1: a branch (or optional) may carry ONE slash ; - stem/suffix - accepting both surfaces while the ; STEM binds, so xl{d} stays xlcenter whether the ; writer typed center or centered. ; The load-time audit expands every branch, surface, and include/omit ; when checking duplicate shapes, so a collapsed rule cannot silently ; shadow (or be shadowed by) a plain one. ; ; G3: dialect layering. Load order is the contract: THIS base file ; first, then dialect phrasebooks alphabetically (E2's plan). A ; dialect rule with the same shape as an earlier rule REFUSES to ; load unless marked - "override: =>