block method

Parser<BlockNode> block()

Implementation

Parser<BlockNode> block() =>
    seq6(
      ref0(blockLabel).optionalWith(const <String>[]),
      ref0(blockConst).optionalWith(const <ConstantDefinitionNode>[]),
      ref0(blockType).optionalWith(const <TypeDefinitionNode>[]),
      ref0(blockVar).optionalWith(const <VariableDeclarationNode>[]),
      [ref0(blockProcedure), ref0(blockFunction)].toChoiceParser().star(),
      ref0(blockStatement),
    ).map6(
      (labels, constants, types, variables, subroutines, statement) =>
          BlockNode(
            labels: labels,
            constants: constants,
            types: types,
            variables: variables,
            subroutines: subroutines,
            statement: statement,
          ),
    );