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'
}