function parse_scatter()

in src/parser/WDL/hermes/wdl_parser.js [3371:3416]


function parse_scatter(ctx) {
  var current = ctx.tokens.current();
  var rule = current != null ? table[40][current.id] : -1;
  var tree = new ParseTree(new NonTerminal(98, 'scatter'));
  var ast_parameters;
  var subtree;
  var t;
  ctx.nonterminal = "scatter";
  if (current == null) {
    throw new SyntaxError('Error: unexpected end of file');
  }
  if (rule == 73) { // $scatter = :scatter :lparen :identifier :in $e :rparen :lbrace $_gen10 :rbrace -> Scatter( item=$2, collection=$4, body=$7 )
    ctx.rule = rules[73];
    ast_parameters = {
      'item': 2,
      'collection': 4,
      'body': 7,
    }
    tree.astTransform = new AstTransformNodeCreator('Scatter', ast_parameters);
    t = expect(ctx, 25); // :scatter
    tree.add(t);
    t = expect(ctx, 43); // :lparen
    tree.add(t);
    t = expect(ctx, 39); // :identifier
    tree.add(t);
    t = expect(ctx, 24); // :in
    tree.add(t);
    subtree = parse_e(ctx);
    tree.add(subtree);
    t = expect(ctx, 5); // :rparen
    tree.add(t);
    t = expect(ctx, 42); // :lbrace
    tree.add(t);
    subtree = parse__gen10(ctx);
    tree.add(subtree);
    t = expect(ctx, 51); // :rbrace
    tree.add(t);
    return tree;
  }
  throw new SyntaxError(ctx.error_formatter.unexpected_symbol(
    ctx.nonterminal,
    ctx.tokens.current(),
    nonterminal_first[98],
    rules[73]
  ));
}