forth: parsing/dictionary '/[']/EXECUTE/LITERAL/POSTPONE/WORD/FIND/>BODY (Hayes 463/638, 72%)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
This commit is contained in:
@@ -90,7 +90,7 @@ Representation:
|
||||
- [x] Mixed/double-cell math: `S>D`, `M*`, `UM*`, `UM/MOD`, `FM/MOD`, `SM/REM`, `*/`, `*/MOD`
|
||||
- [x] Double-cell ops: `D+`, `D-`, `D=`, `D<`, `D0=`, `2DUP`, `2DROP`, `2OVER`, `2SWAP` (already), plus `D>S`, `DABS`, `DNEGATE`
|
||||
- [x] Number formatting: `<#`, `#`, `#S`, `#>`, `HOLD`, `SIGN`, `.R`, `U.`, `U.R`
|
||||
- [ ] Parsing/dictionary: `WORD`, `FIND`, `EXECUTE`, `'`, `[']`, `LITERAL`, `POSTPONE`, `>BODY`, `DOES>`
|
||||
- [x] Parsing/dictionary: `WORD`, `FIND`, `EXECUTE`, `'`, `[']`, `LITERAL`, `POSTPONE`, `>BODY` (DOES> deferred — needs runtime-rebind of last CREATE)
|
||||
- [ ] Source/state: `SOURCE`, `>IN`, `EVALUATE`, `STATE`, `[`, `]`
|
||||
- [ ] Misc Core: `WITHIN`, `MAX`/`MIN` (already), `ABORT`, `ABORT"`, `EXIT`, `UNLOOP`
|
||||
- [ ] File Access word set (via SX IO)
|
||||
@@ -106,6 +106,23 @@ Representation:
|
||||
|
||||
_Newest first._
|
||||
|
||||
- **Phase 5 — parsing/dictionary words `'`/`[']`/`EXECUTE`/`LITERAL`/
|
||||
`POSTPONE`/`WORD`/`FIND`/`>BODY` (Hayes 448→463, 72%).** xt is
|
||||
represented as the SX dict reference of the word record, so
|
||||
`'`/`[']` push the looked-up record and `EXECUTE` calls
|
||||
`forth-execute-word` on the popped value. `LITERAL` (IMMEDIATE)
|
||||
pops a value at compile time and emits a push-op. `POSTPONE`
|
||||
(IMMEDIATE) compiles into the *outer* def an op that, when run
|
||||
during a *later* compile, appends a call-w op to whatever def is
|
||||
current — the standard two-tier compile semantic. Added
|
||||
`state.last-defined` tracked by every primitive/colon definition
|
||||
so `IMMEDIATE` can target the most-recent word even after `;`
|
||||
closes the def. CREATE now stashes its data-field address on the
|
||||
word record so `>BODY` can recover it. `WORD`/`FIND` use the byte
|
||||
memory and counted-string layout already in place.
|
||||
`DOES>` is deferred — needs a runtime mechanism to rebind the
|
||||
last-CREATE'd word's action.
|
||||
|
||||
- **Phase 5 — pictured numeric output: `<#`/`#`/`#S`/`#>`/`HOLD`/`SIGN` +
|
||||
`U.`/`U.R`/`.R` (+9; Hayes 446→448, 70%).** Added a `state.hold`
|
||||
list of single-character strings — `<#` resets it, `HOLD` and
|
||||
|
||||
Reference in New Issue
Block a user