UNPKG

jsdoc-type-pratt-parser

Version:

[![Npm Package](https://badgen.net/npm/v/jsdoc-type-pratt-parser)](https://www.npmjs.com/package/jsdoc-type-pratt-parser) [![Test Status](https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/actions/workflows/test.yml/badge.svg?branch=main)]

26 lines (22 loc) 731 B
import { composeParslet } from './Parslet.js' import { Precedence } from '../Precedence.js' import { assertRootResult, assertResultIsNotReservedWord } from '../assertTypes.js' export const unionParslet = composeParslet({ name: 'unionParslet', accept: type => type === '|', precedence: Precedence.UNION, parseInfix: (parser, left) => { parser.consume('|') const elements = [] do { elements.push(parser.parseType(Precedence.UNION)) } while (parser.consume('|')) return { type: 'JsdocTypeUnion', elements: [ assertResultIsNotReservedWord(parser, assertRootResult(left)), ...elements.map((element) => assertResultIsNotReservedWord(parser, element)) ] } } })