Skip to content
On this page

optional composite

Signature

ts
function optional<T>(parser: Parser<T>): Parser<T | null>

Description

optional combinator tries to apply parser. Returns the result of parser or null, and only fails if parser fails.

Usage

ts
const Parser = sequence(
  optional(string('-')),
  whole()
)

Success

ts
run(Parser).with('-2')

{
  isOk: true,
  pan: [ 0, 2 ],
  pos: 2,
  value: [ '-', 2 ]
}

ts
run(Parser).with('2')

{
  isOk: true,
  pan: [ 0, 1 ],
  pos: 1,
  value: [ null, 2 ]
}

Failure

ts
run(Parser).with('~2')

{
  isOk: false,
  span: [ 0, 0 ],
  pos: 0,
  expected: 'whole number'
}