In following to the comment:
- It introduces unnecessary coupling between the Forth text interpreter loop and the Recognizer API.
An illustration of this idea:
┌──────────────┐
│ Outer Loop │ mode
│ │─────────────────────┐
└──────────────┘ │
↑ │
│ │
┌──────┐ │
│ mode │ │
└──────┘ │
↑ ↓
│ ┌─────────────────────────┐
┌────────────────┐ │ Words that analyze mode │
│ Words that │ │ - token translators │
│ change mode │ │ │
│ │ │ tt-nt tt-lit ... │
│ [ ] : ; ... │ │ │
└────────────────┘ └─────────────────────────┘
Why should the Outer loop pass the current mode between that blocks?
It should not:
┌──────────────┐
│ Outer Loop │
│ │
└──────────────┘
┌─────────────────────────┐
┌────────────────┐ │ Words that analyze mode │
│ Words that │ │ - token translators │
│ change mode │ │ │
│ │ │ tt-nt tt-lit ... │
│ [ ] : ; ... │ │ │
└────────────────┘ └─────────────────────────┘
↓ ↑
│ │
│ ┌──────┐ │
└────────┤ mode ├───────────┘
└──────┘