function parseBlock(allowStrict) {
    var node = startNode();
    var first = true;
    var strict = false;
    var oldStrict;
    node.body = [];
    expect(_braceL);
    while (!eat(_braceR)) {
      var stmt = parseStatement();
      node.body.push(stmt);
      if (first && allowStrict && isUseStrict(stmt)) {
        oldStrict = strict;
        setStrict(strict = true);
      }
      first = false;
    }
    if (strict && !oldStrict) setStrict(false);
    return finishNode(node, "BlockStatement");
  }
Parse a semicolon-enclosed block of statements, handling `"use
strict"` declarations when `allowStrict` is true (used for
function bodies).

@param {boolean=} allowStrict
@returns {!node_t}