Semantic analysis (computer science)
From Wikipedia, the free encyclopedia
In computer science, semantic analysis is a pass by a compiler that adds semantical information to the parse tree and performs certain checks based on this information. It logically follows the parsing phase, in which the parse tree is generated, and logically precedes the code generation phase, in which executable code is generated. (In a compiler implementation, it may be possible to fold different phases into one pass). Typical examples of semantical information that is added and checked is typing information (type checking) and the binding of variables and function names to their definitions (object binding). Sometimes also some early code optimization is done in this phase.
For this phase the compiler usually maintains so-called symbolic tables in which it stores what each symbol (variable names, function names, etc.) refers to.