Lecture 4
1 / 22

Lecture # 4 - PowerPoint PPT Presentation

  • Uploaded on

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?

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about ' Lecture # 4' - quant

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Lecture 4

Lecture # 4

Chapter 1 (Left over Topics)

Chapter 3 (continue)

Left over topics of chapter 1
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
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

Another way
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
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
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
Section 1.5: The Grouping of Phases

  • Compiler phases are grouped into front and backends:

    • 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.

Compiler passes
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
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 sufficient


COP5621 Fall 2009

Antlr 3 x project for compiler construction
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:


Recap of the last lecture
Recap of the last lecture

  • Difference:

Skeletal Source Program


Source Program


Target Assembly Program


Relocatable Object Code

Libraries and

Relocatable Object Files


Absolute Machine Code


We discussed:

  • What are Regular Expressions ? How to write ?

  • RE→NFA (Thompson’s construction)

  • NFA →DFA (Subset construction)

The subset construction algorithm
The Subset Construction Algorithm

Initially, -closure(s0) is the only state in Dstates and it is unmarkedwhile there is an unmarked state T in Dstatesdo mark Tfor each input symbol a  doU := -closure(move(T,a))ifU is not in Dstatesthen add U as an unmarked state to Dstatesend ifDtran[T,a] := Uend doend do

Subset construction example
Subset Construction Example






















DstatesA = {0,1,3,7}B = {2,4,7}C = {8}D = {7}E = {5,8}F = {6,8}



















a2 a3

Today s lecture
Today’s Lecture

  • How can we minimize a DFA? (Hopcroft’s Algorithm)

Section 3 9 minimization of dfa
Section 3.9: Minimization of DFA

  • What do we want to achieve?

Hopcroft s algorithm pg 142
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
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
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
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
Example # 1

  • The DFA for (a|b) *abb