2015-03-04 12 views
5

Je voudrais écrire une boucle while() dans Gforth. Malheureusement, the only tutorial online n'est pas utile en raison d'un manque d'exemples, et les exemples sur les boucles comptées (ce que je ne cherche pas) apparaissent fondamentalement différents.Comment écrire une boucle while() dans Gforth

Quels sont des exemples concrets de la façon de représenter quelque chose comme ça?

while (x > 3) { print(x); x--; } 

Ou vraiment, juste une façon concrète pour représenter quoi que ce soit de la forme:

while (predicate) { expression(s) } 

Répondre

5

Votre premier morceau de code traduit à:

\ Assuming x is on the top of the stack. 
begin dup 3 > while dup . 1- repeat 

\ Or if x is in memory. 
begin x @ 3 > while x ? -1 x +! repeat 

Et la seconde:

begin predicate while expressions repeat