function semicolon() {
    if (!eat(_semi) && !canInsertSemicolon()) {
      unexpected();
    }
  }
Consume a semicolon, or, failing that, see if we are allowed to
pretend that there is a semicolon at this position.