paramItem method

Parser<({ArgNode? arg, ExpressionNode? defaultVal, bool isBareStar, bool isKwarg, bool isSlash, bool isVararg})> paramItem()
inherited

Implementation

Parser<
  ({
    ArgNode? arg,
    ExpressionNode? defaultVal,
    bool isSlash,
    bool isBareStar,
    bool isVararg,
    bool isKwarg,
  })
>
paramItem() => [
  ref1(token, '/').map(
    (_) => (
      arg: null,
      defaultVal: null,
      isSlash: true,
      isBareStar: false,
      isVararg: false,
      isKwarg: false,
    ),
  ),
  seq2(ref1(token, '**'), ref0(paramWithAnnotation)).map2(
    (_, param) => (
      arg: param,
      defaultVal: null,
      isSlash: false,
      isBareStar: false,
      isVararg: false,
      isKwarg: true,
    ),
  ),
  seq2(ref1(token, '*'), ref0(paramWithAnnotation)).map2(
    (_, param) => (
      arg: param,
      defaultVal: null,
      isSlash: false,
      isBareStar: false,
      isVararg: true,
      isKwarg: false,
    ),
  ),
  ref1(token, '*').map(
    (_) => (
      arg: null,
      defaultVal: null,
      isSlash: false,
      isBareStar: true,
      isVararg: false,
      isKwarg: false,
    ),
  ),
  seq2(
    ref0(paramWithAnnotation),
    seq2(
      ref0(assignToken),
      ref0(singleExpression),
    ).map2((_, e) => e).optional(),
  ).map2(
    (param, defVal) => (
      arg: param,
      defaultVal: defVal,
      isSlash: false,
      isBareStar: false,
      isVararg: false,
      isKwarg: false,
    ),
  ),
].toChoiceParser();