Situación
El analizador semántico es la tercera fase de un traductor y, por tanto, recibirá el AST producido por el analizador sintáctico.
Llegados a esta fase se tiene asegurado que la entrada está formada por palabras válidas y en un orden válido (comprobado por los analizadores léxico y sintáctico respectivamente). Pero esto no quiere decir que la entrada sea correcta; el sintáctico se limitó a pasar de texto a árbol — aunque la entrada estuviera mal. El sintáctico sólo se preocupa de que cada estructura tenga todas sus partes y ordenadas. Por ejemplo:
- Comprueba que después de un print haya una variable — pero le es indiferente si dicha variable ha sido definida o no.
- Comprueba que una suma tenga dos operandos — pero da por válido una suma cuyos operandos sean, por ejemplo, un array y un float.
Por tanto, muchas veces, lo que ha hecho el analizador sintáctico es simplemente coger un programa inválido en formato texto y pasarlo a un programa inválido en forma de árbol.
Una vez aclarada cuál es la situación que se encuentra el analizador semántico, ya se puede dejar claro qué hace y cómo lo hace.