while
There are two forms of thewhile filter: the standard form and the ~~ form.
while (test) body
while (target~~pattern body
The standard form of the while filter
In the standard form of thewhile filter,
while (test) body
the test is repeatedly evaluated until it is false. After each true evaluation (that is, evaluation that matches the current position), the body is evaluated. The while filter always matches the position.
For example, the following code replaces any \n characters with space characters in a string S:
i=0
while (i<#S)
{if (S[i]==\n) S[i]=" "
i+=1}
The ~~ form of the while filter
If thetest filter is a ~~ filter of the form target~~pattern then the ~~ form is used:
while (target~~pattern body
Here, target is any string filter, and pattern is a quoted regular expression. This is discussed in more detail in ~~ while test. The above example, by the way, would look like this using the ~~ form of while:
while(S~~\n) S[\-0]=" "
Here, \0 is the matched string, and \-0 is its index within S.