Professional Documents
Culture Documents
Unit 1
Unit 1
What is a compiler?
A program that reads a program written in one
language and translates it into another
language.
Source language
Target language
Compiler Architecture
In more detail:
Intermediate
Language
Source
Language
Front End
language specific
Back End
machine specific
Target Language
Separation of Concerns
Retargeting
Intermediate
Language
Source
language
Scanner
(lexical
analysis)
tokens
Parser
(syntax
analysis)
Syntactic
structure
Semantic
Analysis
(IC generator)
Intermediate
Language
Code
Optimizer
Code
Generator
Target
language
Symbol
Table
Source
languag
e
Scanner
(lexical
analysis)
tokens
Parser
(syntax
analysis)
Semantic
Analysis
(IC generator)
Code
Generator
Code
Optimizer
Symbol
Table
Input: result = a + b * c / d
Tokens:
result, =, a, +, b, *, c, /, d
identifiers
operators
Source
language
Scanner
(lexical
analysis)
tokens
Parser
(syntax
analysis)
Syntactic
structure
Semantic
Analysis
(IC generator)
Code
Generator
Target
language
Code
Optimizer
Symbol
Table
Input: result = a + b * c /
d
Exp
Assign ::=
ID = Exp
Assign
ID
Exp
Exp + Exp
ID
Exp * Exp
ID
Exp / Exp
ID
ID
Source
language
Scanner
(lexical
analysis)
Parser
(syntax
analysis)
Syntactic
structure
Syntactic/semantic
structure
Semantic
Analysis
(IC generator)
Code
Generator
Target
language
Syntactic/semantic
structure
Code
Optimizer
Meaning
Type/Error Checking
Intermediate Code Generation
abstract machine
Symbol
Table
Source
language
Scanner
(lexical
analysis)
Parser
(syntax
analysis)
Semantic
Analysis
(IC generator)
Code
Generator
Target
language
Syntactic/semantic
structure
Code
Optimizer
Syntactic/semantic
structure
Symbol
Table
10
Syntactic/semantic
structure
Source
language
Scanner
(lexical
analysis)
Parser
(syntax
analysis)
Semantic
Analysis
(IC generator)
Code
Optimizer
Code
Generator
Target
language
Syntactic/semantic
structure
Symbol
Table
11
12
Related to Compilers
Interpreters (direct execution)
Assemblers
Preprocessors
Text formatters (non-WYSIWYG)
Analysis tools
13