private Stmt stmt() throws SyntaxException {
		Stmt toBeReturned = null;
		// AssignStmt. So check for FIRST(AssignStmt) = {IDENT}
		if (isKind(currentToken, IDENT)) {
			toBeReturned = assignStmt();
		}
		// PauseStmt. So check for FIRST(PauseStmt) = {pause}
		else if (isKind(currentToken, pause)) {
			toBeReturned = pauseStmt();
		}
		// IterationStmt. So check for FIRST(IterationStmt) = {while}
		else if (isKind(currentToken, _while)) {
			toBeReturned = iterationStmt();
		}
		// AlternativeStmt. So check for FIRST(AlternativeStmt) = {if}
		else if (isKind(currentToken, _if)) {
			toBeReturned = alternativeStmt();
		} else if (isKind(currentToken, SEMI)) {
			consume();
		} else {
			throw new SyntaxException(currentToken, "Either of "
					+ Arrays.asList(SEMI, IDENT, pause, _while, _if)
					+ " was expected here.");
		}
		return toBeReturned;
	}