control structure
repeat scan string-expression (match pattern condition? local-declaration* action*)+ again
Scans a string-expression for specified patterns in the same manner as the do scan
action. When a match is found, the corresponding actions are performed. However, the string is then scanned again, from the first character to the right of the part matched by the previous iteration.
This process continues until one of the following conditions has been met:
repeat scan
is explicitly terminated with an exit
or halt
(or with the return
if the repeat scan
is in a function).
Note that an else
phrase may not be used in a repeat scan
action. If an "if all else fails" (if no other case applies) case is required, a match any
alternative can be used with exit
at the end to terminate the loop.
In repeat scan
, patterns that can match zero characters are given special treatment. Zero characters cannot be matched successfully twice in a row. OmniMark enforces this by interpreting a match of zero characters as successful only if the previous iteration matched one or more characters.