function statements(context) {
    var a = [], p;

    while (!state.tokens.next.reach && state.tokens.next.id !== "(end)") {
      if (state.tokens.next.id === ";") {
        p = peek();

        if (!p || (p.id !== "(" && p.id !== "[")) {
          warning("W032");
        }

        advance(";");
      } else {
        a.push(statement(context));
      }
    }
    return a;
  }
Consume a series of statements until encountering either the end of the
program or a token that interrupts control flow.

@param {number} context - the parsing context; see `prod-params.js` for
                          more information

@returns {Array<token>} - the tokens consumed