private Stmt iterationStmt() throws SyntaxException {
		Stmt toBeReturned = null;
		if (isKind(currentToken, _while)) {
			consume();
			match(LPAREN);
			Expr expr = expr();
			match(RPAREN);

			match(LBRACE);
			ArrayList<Stmt> stmtList = new ArrayList<Stmt>();
			// Stmt*. So check for
			// FIRST(Stmt) = { ;, IDENT, pause, _while, _if }
			while (isKind(currentToken, SEMI, IDENT, pause, _while, _if)) {
				try {
					Stmt stmt = stmt();
					// If there are dangling semi-colons like ;;;;; then stmt()
					// would return null. Don't add such statements to the list.
					if (stmt != null)
						stmtList.add(stmt);
				} catch (SyntaxException e) {
					errorList.add(e);
					// skip tokens until next SEMI,
					// consume it, then continue parsing
					while (!isKind(currentToken, SEMI, /*IDENT,*/ pause, _while,
							_if, EOF)) {
						consume();
					}
					if (isKind(currentToken, SEMI)) {
						consume();
					} // if a SEMI, consume it before continuing
				}
			}
			match(RBRACE);
			toBeReturned = new IterationStmt(expr, stmtList);
		}
		return toBeReturned;
	}