Lookaheads
Lookaheads, denoted by the &
and !
characters, can be used to check the next
piece of input without consuming it. The expression &expr
matches if the next
piece of input matches expr
, and !expr
matches if the input does not match
expr
.
For example, this rule matches the word television
followed by a colon, but
does not consume the colon:
tv <- "television" &":"
This rule matches any number of non-space characters, by first checking the next character using a negative lookahead and then consuming it with the wildcard operator:
nonspace <- (!" " .)*
The lookahead operators do not have to be followed by strings, they can be used with any other type of parsing expression.