This document summarizes semantic analysis in compiler design. Semantic analysis computes additional meaning from a program by adding information to the symbol table and performing type checking. Syntax directed translations relate a program's meaning to its syntactic structure using attribute grammars. Attribute grammars assign attributes to grammar symbols and compute attribute values using semantic rules associated with grammar productions. Semantic rules are evaluated in a bottom-up manner on the parse tree to perform tasks like code generation and semantic checking.