0% found this document useful (0 votes)
73 views

Lecture 01 CC

The document discusses the two-pass compiler model. It has a front end that maps source code to an intermediate representation (IR) and a back end that maps the IR to machine code. The front end recognizes legal and illegal programs and produces the IR and preliminary storage map. It consists of a scanner that maps code to tokens and a parser that recognizes syntax and builds the IR using a context-free grammar.

Uploaded by

Usama Ghaffar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
73 views

Lecture 01 CC

The document discusses the two-pass compiler model. It has a front end that maps source code to an intermediate representation (IR) and a back end that maps the IR to machine code. The front end recognizes legal and illegal programs and produces the IR and preliminary storage map. It consists of a scanner that maps code to tokens and a parser that recognizes syntax and builds the IR using a context-free grammar.

Uploaded by

Usama Ghaffar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 21

Compiler

Construction
Lecture 1
Introduction
Phases vs Passes
Two-pass Compiler

source Front IR Back machine


code End End code

errors

3
Two-pass Compiler
 Front end maps legal source
code into IR
 Use an intermediate
representation (IR)

4
Two-pass Compiler
 Back end maps IR into target
machine code
 Admits multiple front ends &
multiple passes

5
Two-pass Compiler
 Front end is O(n) or
O(n log n)
 Back end is NP-Complete
(NPC)

6
Front End
 Recognizes legal (& illegal)
programs
 Report errors in a useful
way
 Produce IR & preliminary
storage map
7
The Front-End
source tokens IR
scanner parser
code

errors
Modules
 Scanner
 Parser
8
Scanner
source tokens IR
scanner parser
code

errors

9
Scanner
 Maps character stream into
words – basic unit of syntax
 Produces pairs –
• a word and
• its part of speech

10
Scanner
 Example
x = x + y
becomes
<id,x>
<id,x>
<assign,=> word
<id,x> token type
<op,+>
<id,y>
11
Scanner
 we call the pair
“<token type, word>” a
“token”
 typical tokens: number,
identifier, +, -, new, while, if

12
Parser

source tokens IR
scanner parser
code

errors

13
Parser
 Recognizes context-free
syntax and reports errors
 Builds IR for source
program

14
Context-Free Grammars
 Context-free syntax is specified
with a grammar G=(S,N,T,P)
 S is the start symbol
 N is a set of non-terminal symbols
 T is set of terminal symbols or words
 P is a set of productions or rewrite
rules

15
Context-Free Grammars
Grammar for expressions
1. goal → expr
2. expr → expr op term
3. | term
4. term → number
5. | id
6. op → +
7. | - 16
The Front End
 For this CFG
S = goal
T = { number, id, +, -}
N = { goal, expr, term, op}
P = { 1, 2, 3, 4, 5, 6, 7}

17
Context-Free Grammars
 Given a CFG, we can derive
sentences by repeated
substitution
 Consider the sentence
(expression)
x+2–y
18
Derivation
Production Result
goal
1 expr
2 expr op term
5 expr op y
7 expr – y
2 expr op term – y
4 expr op 2 – y
6 expr + 2 – y
3 term + 2 – y
5 x+2–y
19
The Front End
 To recognize a valid
sentence in some CFG, we
reverse this process and
build up a parse
 A parse can be represented
by a tree: parse tree or
syntax tree
20
Parse
Production Result
goal
1 expr
2 expr op term
5 expr op y
7 expr – y
2 expr op term – y
4 expr op 2 – y
6 expr + 2 – y
3 term + 2 – y
5 x+2–y
21

You might also like