program method

Parser<ProgramNode> program()

Implementation

Parser<ProgramNode> program() =>
    seq6(
      ref1(token, 'program'),
      ref0(identifier),
      seq3(
        ref1(token, '('),
        ref0(identifier)
            .plusSeparated(ref1(token, ','))
            .map((sep) => sep.elements),
        ref1(token, ')'),
      ).map3((_, params, _) => params).optionalWith(const <String>[]),
      ref1(token, ';'),
      ref0(block),
      ref1(token, '.'),
    ).map6(
      (_, name, params, _, block, _) =>
          ProgramNode(name: name, parameters: params, block: block),
    );