Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #134572

Re: Recognizer proposal

From anton@mips.complang.tuwien.ac.at (Anton Ertl)
Newsgroups comp.lang.forth
Subject Re: Recognizer proposal
Date 2026-02-11 16:30 +0000
Organization Institut fuer Computersprachen, Technische Universitaet Wien
Message-ID <2026Feb11.173046@mips.complang.tuwien.ac.at> (permalink)
References <2026Feb9.084944@mips.complang.tuwien.ac.at> <nnd$1c958fc8$24a55a72@293ae8f8b50e0c83> <mv19avFqi4mU1@mid.individual.net> <nnd$379fa837$3ffa5131@754aac6b211328ed>

Show all headers | View raw


Hans Bezemer <the.beez.speaks@gmail.com> writes:
>Maybe because you have no idea how this thing works. The rules are simple:
>1. If it's a word, execute it;
>2. Otherwise convert it to a number;
>3. Not a number? Throw an error.

Chuck Moore apparently did not have an idea how this thing works,
either, because he added complications like a compilation state and
immediacy.

But you are right: Both of these complications are unnecessary, we can
simplify the text interpreter by leaving them away.  We just have to
write the Forth code using appropriate parsing words, i.e. instead of

: DIGIT ( n -- n )
   DUP 9 > IF  7 + THEN  [CHAR] 0 + ;

one would write the code as

: DIGIT ( n -- n )
   COMPILE DUP 9 LITERAL COMPILE > IF
      7 LITERAL COMPILE + THEN
   [CHAR] 0 COMPILE + ;

[Note that this COMPILE has to be a parsing word that compiles the
following word, unlike fig-Forth's COMPILE , which relied on a text
interpreter with a compilation state.]

For a further simplification of the text interpreter, we should leave
point 2 away and introduce S%, resulting in:

: DIGIT ( n -- n )
   COMPILE DUP S% 9 LITERAL COMPILE > IF
      S% 7 LITERAL COMPILE + THEN
   [CHAR] 0 COMPILE + ;

In addition, we can introduce [S%] to reduce the occurences of
LITERAL, resulting in:

: DIGIT ( n -- n )
   COMPILE DUP [S%] 9 COMPILE > IF
      [S%] 7 COMPILE + THEN
   [CHAR] 0 COMPILE + ;

Admittedly, adding [S%] increases code size, but that's ok, because
it's not in the text interpreter, right?

>FYI, this is a canonical implementation of that interpreter:
>
>: INTERPRET ( -- )
>     BEGIN
>        BL FIND IF  EXECUTE
>           ?STACK ABORT" Stack empty"
>        ELSE  NUMBER  THEN
>     AGAIN ;

This is the canonical implementation?  Where did you get that from?

>Begin, get the next token,

Where do I find this in this code?

>if it's a command execute it, if not convert 
>to a number, rinse and repeat. That's it.

How does the loop terminate?  Are you using the fig-Forth X approach
for that?

>What this proposal does is 
>implementing a hook in this loop in order to attach (multiple) pieces of 
>code in what is a small, comprehensible and elegant piece of software.

Here's the current (untested) state of INTERPRET in the text
interpreter:

: interpret ( ... -- ... )
    begin
        parse-name dup while
            rec-forth state @ 2 + cells + @ execute
    repeat
    2drop ;

Note that it deals with interpretation and compilation state (that's
why there is the "state @ 2 + cells +" sequence; immediacy is handled
elsewhere.  The checking of the various recognizers happens inside
REC-FORTH.

- anton
-- 
M. Anton Ertl  http://www.complang.tuwien.ac.at/anton/home.html
comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
     New standard: https://forth-standard.org/
EuroForth 2025 proceedings: http://www.euroforth.org/ef25/papers/

Back to comp.lang.forth | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Recognizer proposal anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-02-09 07:49 +0000
  Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-02-10 13:36 +0100
    Re: Recognizer proposal jkn <jkn+nin@nicorp.co.uk> - 2026-02-10 17:48 +0000
      Re: Recognizer proposal dxf <dxforth@gmail.com> - 2026-02-11 11:21 +1100
        Re: Recognizer proposal jkn <jkn+nin@nicorp.co.uk> - 2026-02-11 09:05 +0000
          Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-02-11 12:46 +0100
          Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-02-11 13:36 +0100
            Re: Recognizer proposal jkn <jkn+nin@nicorp.co.uk> - 2026-02-11 20:49 +0000
          Re: Recognizer proposal anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-02-11 18:37 +0000
            Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-02-13 12:25 +0100
        Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-02-11 14:34 +0100
          Re: Recognizer proposal dxf <dxforth@gmail.com> - 2026-02-12 11:35 +1100
            Re: Recognizer proposal anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-02-12 07:24 +0000
              Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-02-12 10:59 +0100
                Re: Recognizer proposal anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-02-12 10:13 +0000
                Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-02-13 13:22 +0100
                Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-02-13 13:07 +0100
              Re: Recognizer proposal dxf <dxforth@gmail.com> - 2026-02-12 20:59 +1100
            Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-02-13 12:35 +0100
              Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-02-13 13:30 +0100
                Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-02-13 13:44 +0100
          Re: Recognizer proposal anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-02-12 07:35 +0000
            Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-02-12 10:55 +0100
              Re: Recognizer proposal anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-02-13 08:27 +0000
                Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-02-13 13:43 +0100
                Re: Recognizer proposal Gerry Jackson <do-not-use@swldwa.uk> - 2026-02-13 23:50 +0000
                Re: Recognizer proposal dxf <dxforth@gmail.com> - 2026-02-14 12:53 +1100
                Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-02-15 13:33 +0100
                Re: Recognizer proposal dxf <dxforth@gmail.com> - 2026-02-16 12:18 +1100
                Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-02-19 13:42 +0100
                Evolution of Forths  was Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-02-19 14:38 +0100
                Re: Evolution of Forths was Re: Recognizer proposal dxf <dxforth@gmail.com> - 2026-02-20 12:33 +1100
                Re: Evolution of Forths was Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-02-20 11:58 +0100
                Re: Evolution of Forths was Re: Recognizer proposal dxf <dxforth@gmail.com> - 2026-02-24 10:45 +1100
                Re: Evolution of Forths was Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-02-21 16:35 +0100
                Re: Evolution of Forths was Re: Recognizer proposal dxf <dxforth@gmail.com> - 2026-02-24 13:13 +1100
          Re: Recognizer proposal Paul Rubin <no.email@nospam.invalid> - 2026-02-25 20:25 -0800
            Re: Recognizer proposal anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-02-26 06:53 +0000
            Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-02-26 13:09 +0100
              Re: Recognizer proposal dxf <dxforth@gmail.com> - 2026-02-27 20:24 +1100
              Re: Recognizer proposal Gerry Jackson <do-not-use@swldwa.uk> - 2026-02-27 09:25 +0000
                Re: Recognizer proposal anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-02-27 14:48 +0000
              Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-02-27 19:21 +0100
                Re: Recognizer proposal dxf <dxforth@gmail.com> - 2026-02-28 10:15 +1100
                Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-02-28 15:34 +0100
                Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-02-28 17:56 +0100
                Re: Recognizer proposal Paul Rubin <no.email@nospam.invalid> - 2026-02-28 22:45 -0800
                Re: Recognizer proposal anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-03-01 07:54 +0000
                Re: Recognizer proposal Paul Rubin <no.email@nospam.invalid> - 2026-03-01 14:17 -0800
                Re: Recognizer proposal antispam@fricas.org (Waldek Hebisch) - 2026-03-02 00:21 +0000
                Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-03-02 12:36 +0100
                Re: Recognizer proposal Paul Rubin <no.email@nospam.invalid> - 2026-03-04 16:48 -0800
                Re: Recognizer proposal antispam@fricas.org (Waldek Hebisch) - 2026-03-02 00:17 +0000
            Re: Recognizer proposal Krishna Myneni <krishna.myneni@ccreweb.org> - 2026-02-26 07:32 -0600
            Re: Recognizer proposal Stephen Pelc <stephen@vfxforth.com> - 2026-03-02 13:23 +0000
              Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-03-03 13:47 +0100
                Re: Recognizer proposal Stephen Pelc <stephen@vfxforth.com> - 2026-03-03 14:39 +0000
                Re: Recognizer proposal Paul Rubin <no.email@nospam.invalid> - 2026-03-04 16:52 -0800
                Re: Recognizer proposal Stephen Pelc <stephen@vfxforth.com> - 2026-03-06 10:54 +0000
                Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-03-06 12:22 +0100
                Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-03-07 17:58 +0100
              Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-03-03 18:33 +0100
      Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-02-11 13:54 +0100
        Re: Recognizer proposal jkn <jkn+nin@nicorp.co.uk> - 2026-02-11 13:09 +0000
          Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-02-11 15:59 +0100
            Re: Recognizer proposal jkn <jkn+nin@nicorp.co.uk> - 2026-02-11 20:46 +0000
        Re: Recognizer proposal anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-02-11 16:30 +0000
          Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-02-12 12:07 +0100
            Re: Recognizer proposal Lars Brinkhoff <lars.spam@nocrew.org> - 2026-02-12 13:00 +0000
            Re: Recognizer proposal anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-02-12 12:55 +0000
              Re: Recognizer proposal Hans Bezemer <the.beez.speaks@gmail.com> - 2026-02-13 14:17 +0100
            Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-02-13 13:28 +0100
              Re: Recognizer proposal dxf <dxforth@gmail.com> - 2026-02-14 01:23 +1100
            Re: Recognizer proposal Krishna Myneni <krishna.myneni@ccreweb.org> - 2026-02-16 22:07 -0600
              Re: Recognizer proposal dxf <dxforth@gmail.com> - 2026-02-17 21:25 +1100
                Re: Recognizer proposal Krishna Myneni <krishna.myneni@ccreweb.org> - 2026-02-17 08:16 -0600
                Re: Recognizer proposal anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-02-21 15:32 +0000
              Re: Recognizer proposal Stephen Pelc <stephen@vfxforth.com> - 2026-02-17 14:13 +0000
                Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-02-17 20:21 +0100
                Re: Recognizer proposal dxf <dxforth@gmail.com> - 2026-02-18 13:08 +1100
    Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-02-11 12:29 +0100
  Re: Recognizer proposal minforth <minforth@gmx.net> - 2026-02-18 11:14 +0100
    Re: Recognizer proposal anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-02-21 15:40 +0000
      Re: Recognizer proposal Krishna Myneni <krishna.myneni@ccreweb.org> - 2026-02-24 02:43 -0600
        Re: Recognizer proposal Krishna Myneni <krishna.myneni@ccreweb.org> - 2026-03-08 18:15 -0500
          Re: Recognizer proposal anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-03-09 07:49 +0000
            Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-03-09 10:37 +0100
              Re: Recognizer proposal anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-03-10 07:35 +0000
                Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-03-10 12:06 +0100
                Re: Recognizer proposal Krishna Myneni <krishna.myneni@ccreweb.org> - 2026-03-11 09:48 -0500
            Re: Recognizer proposal Krishna Myneni <krishna.myneni@ccreweb.org> - 2026-03-09 16:48 -0500
              Re: Recognizer proposal Krishna Myneni <krishna.myneni@ccreweb.org> - 2026-03-11 09:45 -0500
  Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-02-18 12:33 +0100
    Re: Recognizer proposal anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-02-21 15:48 +0000
      Re: Recognizer proposal albert@spenarnc.xs4all.nl - 2026-02-25 14:11 +0100
  Re: Recognizer proposal NN <november.nihal@gmail.com> - 2026-03-19 19:23 +0000
    Re: Recognizer proposal thresh3@fastmail.com (Lev) - 2026-03-19 23:13 +0000

csiph-web