Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.lang.forth    |    Forth programmers eat a lot of Bratwurst    |    117,927 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 116,763 of 117,927    |
|    Ruvim to Anthony Howe    |
|    Re: single-xt approach in the standard    |
|    18 Sep 24 14:34:47    |
      From: ruvim.pinka@gmail.com              On 2024-09-17 23:12, Anthony Howe wrote:       > On 2024-09-17 06:54, Ruvim wrote:       >> Do you think that the Forth standard should recognize the classic       >> single-xt approach as possible for implementing a standard Forth system?       >>       >> The classic single-xt approach implies that only one execution token       >> (xt) is associated with a name token (nt), and only one name token is       >> associated with a word (a named Forth definition). And words whose       >> compilation semantics differ form default compilation semantics are       >> implemented as immediate words.       >       > Given I prefer single-xt (currently),              Me too.              Actually, most Forth systems are classic single-xt systems. And most       educational materials on how to implement Forth explain the classic       single-xt approach.              One example: https://github.com/uho/minimal       see: https://github.com/uho/minimal/blob/master/compiling-words.fs                     > what I don't get is how for a       > dual-xt system you define a single word with two actions for interpret       > and compile. I don't see a word to distinguish between the two, except       > maybe IMMEDIATE.       >       >> : s" ( "ccc" -- sd | )       >> [char] " parse       >> state @ if postpone sliteral exit then       >> dup >r allocate throw tuck r@ move r>       >> ; immediate       >       > Do you define the same word twice, once for compile (immediate) and       > again for interpret (order of definitions should not be important).       > Example:       >       > : s" ( "ccc" -- sd | ) postpone sliteral ; immediate       > : s" ( "ccc" -- sd | ) dup >r allocate throw tuck r@ move r> ;              Namely this cannot be standard compliant. But yes, something similar.       There are different ways in different systems.              For example, it might look like this:               : s" ( "ccc |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca