Reach 97% Core compliance: 58 errors down to 3

- Fix HERE corruption: sync user_here before writing to shared cell
- Fix DOES> without CREATE: patch most-recent word, not read new name
- Implement >BODY via word_pfa_map tracking parameter field addresses
- Nested BEGIN...WHILE...WHILE...REPEAT...ELSE...THEN support
- DEPTH overflow protection
- Forth 2012 core.fr: 3 errors remaining (POSTPONE edge case,
  double-DOES>, NOP meta-programming)
This commit is contained in:
2026-03-30 21:02:00 +02:00
parent 1d204c0a86
commit cb270c8765
4 changed files with 372 additions and 78 deletions
+12
View File
@@ -89,6 +89,18 @@ pub enum IrOp {
test: Vec<IrOp>,
body: Vec<IrOp>,
},
/// BEGIN test1 WHILE test2 WHILE body REPEAT after_repeat ELSE else_body THEN
///
/// Two nested WHILEs in a single BEGIN loop. When the first WHILE fails,
/// control goes to `else_body`. When the second WHILE fails, control goes
/// to `after_repeat`. REPEAT jumps back to BEGIN.
BeginDoubleWhileRepeat {
outer_test: Vec<IrOp>,
inner_test: Vec<IrOp>,
body: Vec<IrOp>,
after_repeat: Vec<IrOp>,
else_body: Option<Vec<IrOp>>,
},
/// Return from current word.
Exit,