Details the stages of compilation (lexical, syntax, and semantic analysis) and the "semantic gap" between high-level languages and machine code .