It follows parsing and precedes code generation. This process faithfully reflects the structure of a programming language.
The job of the semantic analyzer is to understand the meaning of programming language and make decisions about how to execute it, that is, to indentify the role of an expression and make the order of evaluation. In other words, semantic analysis is what defines the individual character of a programming language. Semantic analyzers usually maintain symbolic tables in order to know what a symbol refers to when it is encountered.
The semantic analyzer usually employs a set of tiny routines called semantic action routines.
Task in this pass include: