• Re: Alternative for long parsing words (was: VALUE and TO implementatio

    From albert@spenarnc.xs4all.nl@21:1/5 to ruvim.pinka@gmail.com on Mon Aug 5 12:04:31 2024
    In article <v8nrb0$3vbpv$3@dont-email.me>,
    Ruvim <ruvim.pinka@gmail.com> wrote:
    On 2024-08-04 15:11, albert@spenarnc.xs4all.nl wrote:
    Particularly I hate ' / ['] .
    My solution that ' has to elevated to a denotation.
    Meaning 'someword leave the address/dea/handle/nametoken
    of `` someword '' that is the same in interpret and compile mode.


    I also often use `'someword` instead of `['] someword` and `' someword`, >because I hate different forms for the conceptually same thing in >interpretation and compilation, and because the form `'someword` is shorter.

    Another thing I hate is when it's not obvious that a word is a parsing
    word, or what its delimiter. So I prefer when parsing delimiters are
    visible.

    For example, I would prefer:
    want( word1 word2 word3 )
    rather than:
    want word1 want word2 want word3

    I have changed WANT to accept several words on the same line
    want word1 word2 word3
    This is one of the few "improvements" I'm not sure about.
    By itself WANT is a concession because it is actually
    "word1" WANTED "word2" WANTED "word3" WANTED
    Your proposal makes sense, having several WANT(ED) on the same line
    is ugly and impractical, but parsing to the end of line is dubious.


    But if you hate parsing words in principle (just because they do
    parsing), why not hate such long parsing words like `[if]`, `\`, the >construct "]]...[[", etc? What is an alternative for them?

    WANT is used recursively in blocks. If you wanted to accomplish the
    same thing with [IF], it would be a horrid mess.
    The same blockfile is valid for MSDOS WINDOWS DPMI en DLL en LINUX
    and 32 64 bit forths.
    For example ALIAS is used all over the place, but it is not in the kernel. "ALIAS" WANTED can be added and that is it.
    WANTED and the conditional rejection of blocks is all that is needed.
    This is the header of a block that is only valid for 32 bits.
    ( CRC-MORE CRC ) CF: ?32 \ AvdH C2feb27
    Note that it is orthogonal to any windows/linux distinction.

    I actually like \ because it is absolutely obvious where the comment ends.
    I hate DOC / ENDDOC pairs and the worst is that you define such pair
    <------- / -----> for a meta forth compilation, as I have seen.

    ]] .. [[ confuses me.
    I have introduced
    :I inl aa bb cc ;
    The :I means that the definition is supposed to be inlined.
    That allows bb for instance be >R .

    If you want separate behaviours in some mode, they must be arrived
    at via the dea.


    Agreed.

    But simplicity of the dual-nt approach (like in cmForth) is sometimes >preferable. Because compilation semantics for a word are defined as an >ordinary word.
    I do not object replacing >CFA (executable address) with >CFA1
    and >CFA2 as long as the starting point is the dea.

    --
    Ruvim


    Groetjes Albert
    --
    Don't praise the day before the evening. One swallow doesn't make spring.
    You must not say "hey" before you have crossed the bridge. Don't sell the
    hide of the bear until you shot it. Better one bird in the hand than ten in
    the air. First gain is a cat purring. - the Wise from Antrim -

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)