The proof is by contradiction. Assume $f$ is not a polynomial.
Consider the following sets $$ S_n = \{x: f^{(n)}(x) = 0\}. $$ $$ X = \{x: \forall (a,b)\ni x:\; f|_{(a,b)}\; is\; not\; a \;polynomial \}. $$
It is clear that $X$ is a non-empty closed set without isolated points. Applying Baire category theorem to $X$ we get that there exists $(a,b)$ such that $(a,b)\cap X$ is non-empty and $$ (a,b)\cap X\subset S_n $$ for some $n$. Since every $x\in (a,b)\cap X$ is an accumulation point we have that $x\in S_m$ for all $m\ge n$ and $x$.
Now consider and any maximal interval $(c,e)\subset ((a,b)-X)$. Recall that $f$ is a polynomial of some degree $d$ on $(c,e)$. Therefore $f^{(d)}\neq 0$ on $[c,e]$. Hence $d< n$. (Since either $c$ or $e$ is in $X$.)
So we get that $f^{(n)}=0$ on $(a,b)$ which contradicts the definition of $X$.