lookahead primitive
Signature
ts
function lookahead<T>(parser: Parser<T>): Parser<T>
Description
lookahead
combinator applies parser
without consuming any input. If parser
fails and consumes some input, so does lookahead
.
Usage
The example is rather contrived, but it clearly illustrates how the combinator works, allowing one, for example, collect ambiguous results for further processing.
ts
const Parser = sequence(
takeLeft(string('hello'), whitespace()),
lookahead(string('let')),
string('lettuce')
)
Success
ts
run(Parser).with('hello lettuce')
{
isOk: true,
span: [ 0, 13 ],
pos: 13,
value: [ 'hello', 'let', 'lettuce' ]
}
Failure
ts
run(Parser).with('hello let')
{
isOk: false,
span: [ 6, 9 ],
pos: 9,
expected: 'lettuce'
}
ts
run(Parser).with('hello something')
{
isOk: false,
span: [ 6, 9 ],
pos: 9,
expected: 'let'
}