Re: Fetch string from comment

Liste des GroupesRevenir à cl forth 
Sujet : Re: Fetch string from comment
De : anton (at) *nospam* mips.complang.tuwien.ac.at (Anton Ertl)
Groupes : comp.lang.forth
Date : 06. Mar 2025, 19:09:30
Autres entêtes
Organisation : Institut fuer Computersprachen, Technische Universitaet Wien
Message-ID : <2025Mar6.190930@mips.complang.tuwien.ac.at>
References : 1 2 3 4 5 6 7 8
User-Agent : xrn 10.11
mhx@iae.nl (mhx) writes:
However, a state machine has well defined rules based on a
state's stored information and its inputs, causing it to go to
another well-defined state while generating outputs. In that
context a goto is harmless and merely serves as a crutch when
there are not enough computing nodes to serve all states in
parallel. How to make such an efficient crutch in Forth?

You lost me.  Why would one "serve all states in parallel"?

Anyway, if the question is how to implement a state machine
efficiently in Forth, one answer is to stay at a higher, more
structured level of abstraction or recreate it from the state machine.
E.g., don't transform a regular expression into a (indeterministic or
deterministic) finite state machine, but instead interpret it directly
(that's what Bernd Paysan's regexp.fs does).  Or instead of
transforming a grammar into a push-down automaton, transform it into a
structured Forth program (like Gray does).

If you cannot do that, in standard Forth you don't really have good
options.  The best is probably to have the current state on the stack
(probably in the form of the address of an array indexed with the
input (or whatever causes a state change) and containing the potential
next states at the appropriate elements.

In a particular implementation, you can do more, including goto-like
things.  What I would do then is have a colon definition per state,
and do the transition to the next state as tail call.  Have some
efficient forward-tail-call mechanism to allow calling states where
the definition comes later.  Gforth has a clever FORWARD, but for now
that does not do tail-calls.

- 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 2023 proceedings: http://www.euroforth.org/ef23/papers/
EuroForth 2024 proceedings: http://www.euroforth.org/ef24/papers/

Date Sujet#  Auteur
3 Mar 25 * Fetch string from comment28sjack
3 Mar 25 +* Re: Fetch string from comment2minforth
4 Mar 25 i`- Re: Fetch string from comment1sjack
4 Mar 25 +* Re: Fetch string from comment10dxf
4 Mar 25 i`* Re: Fetch string from comment9sjack
4 Mar 25 i `* Re: Fetch string from comment8dxf
5 Mar 25 i  +* Re: Fetch string from comment4mhx
5 Mar 25 i  i+- Re: Fetch string from comment1Anton Ertl
5 Mar 25 i  i`* Re: Fetch string from comment2dxf
6 Mar 25 i  i `- Re: Fetch string from comment1dxf
5 Mar 25 i  `* Re: Fetch string from comment3sjack
5 Mar 25 i   `* Re: Fetch string from comment2sjack
5 Mar 25 i    `- Re: Fetch string from comment1minforth
4 Mar 25 +* Re: Fetch string from comment13mhx
5 Mar 25 i`* Re: Fetch string from comment12Gerry Jackson
5 Mar 25 i `* Re: Fetch string from comment11Anton Ertl
5 Mar 25 i  +* Re: Fetch string from comment9mhx
5 Mar 25 i  i`* Re: Fetch string from comment8Anton Ertl
6 Mar 25 i  i `* Re: Fetch string from comment7mhx
6 Mar 25 i  i  `* Re: Fetch string from comment6Anton Ertl
7 Mar 25 i  i   +- Re: Fetch string from comment1mhx
7 Mar 25 i  i   `* Efficient implementation of Finite State Machines (FSM)4Gerry Jackson
9 Mar 25 i  i    `* Re: Efficient implementation of Finite State Machines (FSM)3Anton Ertl
10 Mar 25 i  i     +- Re: Efficient implementation of Finite State Machines (FSM)1Gerry Jackson
11 Mar 25 i  i     `- Re: Efficient implementation of Finite State Machines (FSM)1Anton Ertl
5 Mar 25 i  `- Re: Fetch string from comment1Gerry Jackson
4 Mar 25 +- Re: Fetch string from comment1sjack
7 Mar 25 `- Re: Fetch string from comment1sjack

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal