|
|
@@ -0,0 +1,66 @@
|
|
|
+# Session save — 2026-09-19 (m2compiler-V3)
|
|
|
+
|
|
|
+## Where we are
|
|
|
+
|
|
|
+HEAD: `1505ca8` — `v3-step1.11`, suite **35/35** (15 run + 20 reject).
|
|
|
+Repo: `/home/eric/Projets/Projets-Modula2/MyWork/m2compiler-V3`, no remote
|
|
|
+(push recipe in untracked `git.txt` → `http://git.yojik.eu/eric/M2compiler-V3.git`).
|
|
|
+Uncommitted right now: `docs/grammar.md` (fresh extraction, needs a
|
|
|
+commit decision). `git.txt` intentionally untracked.
|
|
|
+
|
|
|
+## Tag lineage (all green at every tag)
|
|
|
+
|
|
|
+v3-step1 (5/5 integer pipeline) → 1.1 (scope-tree+BST symtab) → 1.2
|
|
|
+(heap-allocated storage) → 1.3 (0x-only hex, a-f, E-exponents, `//`)
|
|
|
+→ 1.4 (3 units, imports, opaque, nesting) → 1.5 (`file:line:col`
|
|
|
+console errors) → 1.6 (showcase1=50) → 1.7 (scalar TYPEs, headings,
|
|
|
+bodies, FORWARD) → 1.8 (showcase2=71) → 1.9 (statements+booleans,
|
|
|
+QBE block discipline) → 1.10 (Clarion classes + corrected OOP.txt
|
|
|
+sketch) → 1.11 (showcase4=44, showcase5=7×230 class frontier);
|
|
|
+v3-step2 (REAL lowering, scalar story complete); docs-only commits
|
|
|
+(OOP.txt ref, root README) untagged between 1.9 and 2.
|
|
|
+
|
|
|
+## Grammar status (`compiler/src/M2.atg`, ~900 lines, LL(1) with one
|
|
|
+benign Coco warning in TypeBlock — verified correct codegen)
|
|
|
+
|
|
|
+Lowers: program modules; CONST/VAR/scalar TYPEs (named, subrange
|
|
|
+w/ folded literal bounds, enum declared); full scalar arith incl.
|
|
|
+REAL (`d`, swtof, cXXd); relations; eager AND/OR/NOT; IF/CASE
|
|
|
+(labels+ranges+ELSE, compare-chain)/WHILE/REPEAT/LOOP+EXIT/FOR-full-BY/
|
|
|
+RETURN(232-checked). Parse-now+230: DEFINITION/IMPLEMENTATION,
|
|
|
+nesting (+EXPORT), proc bodies, FORWARD, enum use, classes
|
|
|
+(decl+single-inheritance+IMPLEMENTATION blocks+VIRTUAL).
|
|
|
+Still syntax errors: ARRAY/RECORD/SET/POINTER, WITH, IN, calls.
|
|
|
+
|
|
|
+## Locked decisions (do not relitigate without cause)
|
|
|
+
|
|
|
+Classic idents (no `_`, R10 reserves leading `_`); `0x`-only hex;
|
|
|
+`#` only; `NOT/AND/OR` only; no `B/C`; unary minus at expr start
|
|
|
+only (Wirth); `;` method separators (example over sketch);
|
|
|
+single inheritance; every ARRAY = LONGCARD count + elements
|
|
|
+(inline, element counts, no NUL); UCHAR=32-bit + UString=count+
|
|
|
+codepoints, UTF-8 edges, hard lex errors; self-host bar =
|
|
|
+byte-identical `.ssa` over 3 stages. Truncating DIV/MOD (`/` on
|
|
|
+ints too, Test2 parity). Eager booleans. Test2-compat QbeGen
|
|
|
+signatures kept for growth.
|
|
|
+
|
|
|
+## Open threads / next = step 3 composites
|
|
|
+
|
|
|
+ARRAY/RECORD/SET/POINTER + length-prefixed layout + WITH + IN;
|
|
|
+`docs/plan.md` + `docs/summary_step3.md` (stub) hold the scope.
|
|
|
+Also pending: unmatched-FORWARD 231, fwd/body signature compare,
|
|
|
+CHAR-arith policy, enum lowering, LONGINT quads, sibling-method
|
|
|
+visibility (step 4 calls), class lowering (vtable/THIS), `0b` +
|
|
|
+digit separators, `grammar.md` regen hook in build.sh (offered,
|
|
|
+not done). A phantom `t_class` mid-session failure never
|
|
|
+reproduced — see `docs/summary_step1.10.md` §3; clean-rebuild
|
|
|
+first if anything similar appears.
|
|
|
+
|
|
|
+## Resume commands
|
|
|
+
|
|
|
+```sh
|
|
|
+cd /home/eric/Projets/Projets-Modula2/MyWork/m2compiler-V3/compiler
|
|
|
+./build.sh && ./run_tests.sh # expect 35/35
|
|
|
+```
|
|
|
+Then: interactive § statements for composites (ask which first:
|
|
|
+ARRAY+indexing, RECORD+WITH, SET+IN, POINTER).
|