It's a compiler that provides the hooks necessary to work well to support the interactive features of an IDE, like color-coding, autocompletion, etc. One of the technical challenges is efficiently staying in sync with what's been edited. See this talk.