// ECMA-262 12.2.5 Array Initializer public Node parseArrayInitializer() { List<Node> elements = new List<Node>(); Node node = new Node(); Node restSpread; expect("["); while (!match("]")) { if (match(",")) { lex(); elements.Add(null); } else if (match("...")) { restSpread = new Node(); lex(); restSpread.finishSpreadElement(inheritCoverGrammar(parseAssignmentExpression)); if (!match("]")) { isAssignmentTarget = isBindingElement = false; expect(","); } elements.Add(restSpread); } else { elements.Add(inheritCoverGrammar(parseAssignmentExpression)); if (!match("]")) { expect(","); } } } lex(); return node.finishArrayExpression(elements); }