Download - Lecture # 4
![Page 1: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/1.jpg)
Lecture # 4
Chapter 1 (Left over Topics)Chapter 3 (continue)
![Page 2: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/2.jpg)
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?
![Page 3: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/3.jpg)
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
![Page 4: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/4.jpg)
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
![Page 5: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/5.jpg)
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
![Page 6: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/6.jpg)
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
![Page 7: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/7.jpg)
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
![Page 8: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/8.jpg)
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
![Page 9: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/9.jpg)
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
![Page 10: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/10.jpg)
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
![Page 11: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/11.jpg)
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
![Page 12: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/12.jpg)
Recap
We discussed:
• What are Regular Expressions ? How to write ?
• RE→NFA (Thompson’s construction)
• NFA →DFA (Subset construction)
![Page 13: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/13.jpg)
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
![Page 14: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/14.jpg)
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
![Page 15: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/15.jpg)
Today’s Lecture
• How can we minimize a DFA? (Hopcroft’s Algorithm)
![Page 16: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/16.jpg)
Section 3.9: Minimization of DFA
• What do we want to achieve?
![Page 17: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/17.jpg)
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
![Page 18: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/18.jpg)
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)
![Page 19: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/19.jpg)
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
![Page 20: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/20.jpg)
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
![Page 21: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/21.jpg)
Example # 1
• The DFA for (a|b) *abb
![Page 22: Lecture # 4](https://reader035.vdocument.in/reader035/viewer/2022070420/56815fcc550346895dcec7d2/html5/thumbnails/22.jpg)
Example # 1 (Applying Minimization)