Detección e información de errores

En cada fase de la compilación se pueden detectar errores. Uno de los objetos de la compilación es tratar de detectar el mayor número posible de errores, antes que se detenga la compilación, para esos efectos se debe informar del error y luego tratar de manipularlo de alguna forma, para que el compilador pueda continuar con el proceso de compilación. Se conoce la poca utilidad de los compiladores que detienen el proceso de compilación ante la presencia del primer error encontrado en el programa fuente.

Análisis semántico

Esta fase se dedica a determinar si todos los componentes del programa están siendo usados de manera válida, para el contexto en el cual aparecen. Es decir, se deben los componentes colindantes a cada componente siendo analizado, antes de determinar que las operaciones ejecutadas por el mismo estén dentro de las operaciones permitidas por el lenguaje, para dicho tipo de situaciones. Una vez el programa fuente ha sido sometido a un análisis completo y se puede tener en cuenta de que esta correctamente escrito. Solo queda faltando generar algún tipo de salida para que el ciclo de compilación quede completo

Análisis sintáctico

A esta fase le corresponde evaluar que el programa fuente escrito realmente cumpla con las especificaciones del lenguaje definido para el compilador. Para ello normalmente el programa fuente debe reflejar una estructura especial. Esta debe responder a una serie de reglas, que pueden ser recursivas o no, las cuales se denominan con el nombre de gramáticas. (Es una de las fases más importantes de la compilación.)