lecture # 4
DESCRIPTION
Lecture # 4. Chapter 1 (Left over Topics) Chapter 3 (continue). Left over Topics of Chapter 1. What is Analysis /Synthesis Model of Compilation? Symbol Table Management Error Detection and Reporting What is meant by grouping of compilation phases into Front End and Back End? - PowerPoint PPT PresentationTRANSCRIPT
Lecture # 4
Chapter 1 (Left over Topics)Chapter 3 (continue)
Left over Topics of Chapter 1• What is Analysis /Synthesis Model of Compilation?
• Symbol Table Management
• Error Detection and Reporting
• What is meant by grouping of compilation phases into Front End and Back End?
• What is meant by Single / Multiple Passes?
• What are the Compiler Construction Tools available?
The Analysis-Synthesis Model of Compilation
• There are two parts to compilation:– Analysis determines the operations implied by the
source program which are recorded in a tree structure
– Synthesis takes the tree structure and translates the operations therein into the target program
3
Another way..
• Analysis: breaks the source program into constituent pieces and creates intermediate representation
• Synthesis: constructs target program from the intermediate representation
• The first three phases namely: Lexical Analysis, Syntax Analysis and Semantic Analysis form the analysis part
• The last three phases form the Synthesis part
Symbol Table Management
• An essential function of a compiler is to record the identifiers used in the source program and to collect information about various attributes of each identifier
• A symbol table is a data structure containing an entry for each identifier with fields for the attributes of the identifier
Error Detection and Reporting• Each phase of the compiler can encounter error.• After detecting error the compiler must deal with that error so
that compilation can proceed.
• A lexical analyzer will detect errors where characters do not form a token
• Errors where token violates the syntax are determined by syntax analysis
• If the compiler tries to add two variables one of which is the name of a function and another is an array then Symantic Analysis will throw error
Section 1.5: The Grouping of Phases
• Compiler phases are grouped into front and back ends:– Front end: analysis (machine independent)– Back end: synthesis (machine dependent)
• Front End focuses on understanding the source program and the backend focuses on mapping programs to the target machine.
7
Compiler Passes• Compiler Passes:– A collection of phases is done only once (single pass) or
multiple times (multi pass)
• Single pass: usually requires everything to be defined before being used in source program
• Multi pass: compiler may have to keep entire program representation in memory
Section 1.6: Compiler-Construction Tools
• Software development tools are available to implement one or more compiler phases
– Scanner generators (Lex and Flex)– Parser generators (Yacc and Bison)– Syntax-directed translation engines– Automatic code generators– Data-flow engines
For further details this webpage would be sufficienthttp://dinosaur.compilertools.net/
9COP5621 Fall 2009
ANTLR 3.x Project for Compiler Construction
• This is a project that is built using Eclipse and the source code along with all the class files are available in Java. This aids the students in creating compiler project on a fly.
• Its C# libraries are also available that can be used.
• I would try to take a lab and discuss it
• It tutorials and videos are available at the following address: http://www.vimeo.com/groups/29150/videos
Recap of the last lecture• Difference:
Preprocessor
Compiler
Assembler
Linker
Source Program
Target Assembly Program
Relocatable Object Code
11Absolute Machine Code
Skeletal Source Program
Libraries andRelocatable Object Files
Recap
We discussed:
• What are Regular Expressions ? How to write ?
• RE→NFA (Thompson’s construction)
• NFA →DFA (Subset construction)
13
The Subset Construction AlgorithmInitially, -closure(s0) is the only state in Dstates and it is unmarkedwhile there is an unmarked state T in Dstates do
mark T
for each input symbol a doU := -closure(move(T,a))if U is not in Dstates then
add U as an unmarked state to Dstatesend ifDtran[T,a] := U
end doend do
14
Subset Construction Example
2a1
6a3 4 5b b
8b7
a b0
start
a1
a2
a3
DstatesA = {0,1,3,7}B = {2,4,7}C = {8}D = {7}E = {5,8}F = {6,8}
Astart
a
D
b
b
b
ab
bB
C
E Fa
b
a1
a3
a3 a2 a3
Today’s Lecture
• How can we minimize a DFA? (Hopcroft’s Algorithm)
Section 3.9: Minimization of DFA
• What do we want to achieve?
Hopcroft’s Algorithm Pg 142
• Input: A DFA M with set of states S, set of inputs ,
transition function defined, start state So and set of accepting states F
• Output: A DFA M’ accepting the same language as M
and having fewer states as possible
Algorithm 3.6
• Method:Step1:Construct an initial partition P of the states
with two groups : the accepting states (F) and the non accepting states (S-F)
Step2:Apply the following procedure (Construction of Pnew) to construct a new partition (Pnew)
Procedure for Pnew construction
• For each group G of P do partition G into subgroups such that two states s and t are in the same subgroup if and only if for all input symbols a, states s and t have transitions on a to states in the same group of P• Replace G in Pnew by the set of all subgroups
formed
Algorithm 3.6(continue..)• Step3: If Pnew = P and proceed to step 4 . Otherwise repeat step 2
with P=Pnew
• Step4:Choose one state as the state representative and add these states in M’
• Step5: If M’ has a dead state and unreachable state then remove those states (A dead state is a non accepting state that has transitions to itself on all inputs. An unreachable state is any state not reachable from the start state )
• Step6: Complete
Example # 1
• The DFA for (a|b) *abb
Example # 1 (Applying Minimization)