GupShup Study
 
  
Modern Compiler Design Free Lecture notes pdf download
Ravi Chopra

Modern Compiler Design Free Lecture notes pdf download

Ravi Chopra | 11-Mar-2016 |
Modern Compiler Design , Introduction & Explanation , Lexical Analysis , Bottom-Up Parsing & Yacc , Abstract Syntax Trees in C , Semantic Analysis in C , Generating Abstract Assembly in C , Code generation ,

Hi friends, here Ravi Chopra uploaded notes for Compiler Design with title Modern Compiler Design Free Lecture notes pdf download. You can download this lecture notes, ebook by clicking on the below file name or icon.

Modern Compiler Design Contents
1 Introduction & Explanation 3
1.1 What Is This Document? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 How To Use This Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 So Where Are Chapters 3 and 4? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Where Can I Find Necessary Files for Creating a Compiler in C? . . . . . . . . . . . . . . . . 3
2 Lexical Analysis 4
2.1 Lex – A Lexical Analyzer Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 Structure of a Lex file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.2 Named Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.3 Tokens With Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.4 Dealing with White Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.5 Keeping Track of Token Positions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.6 States in Lex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.7 Using Lex with Other C Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.8 Advanced Lex Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Creating a Lexical Analyzer for simpleJava in Lex . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.1 Project Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.2 Project Difficulty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.3 Project “Gotcha”s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.4 Provided Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5 Bottom-Up Parsing & Yacc 21
5.1 Yacc – Yet Another Compiler Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.1.1 Structure of a Yacc File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.1.2 Dealing With Parsing Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.1.3 Tokens With Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.1.4 When Yacc Has Conflicts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.1.5 Operator Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2 Writing a Parser For simpleJava Using Yacc . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.2.1 Project Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.2.2 Project Difficulty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.2.3 Project “Gotcha”s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.2.4 Provided Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.3 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6 Abstract Syntax Trees in C 33
6.1 Implementing Trees in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.1.1 Representing trees – structs and unions . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.1.2 Using Constructors in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.1.3 Traversing Trees in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.2 Yacc Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.2.1 Simple Yacc Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1
6.2.2 Using the Yacc Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.2.3 A Simple Yacc Calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.2.4 Creating an Abstract Syntax Tree for a Simple Language . . . . . . . . . . . . . . . . 39
6.2.5 Tokens With Complicated Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
6.3 Creating an Abstract Syntax Tree for simpleJava Using C and Yacc . . . . . . . . . . . . . . 43
6.3.1 Project Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
6.3.2 Project Difficulty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.3.3 Project “Gotcha’s” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.3.4 Provided Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7 Semantic Analysis in C 49
7.1 Types in simpleJava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.1.1 Built-in Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.1.2 Array Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.1.3 Class Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.2 Implementing Environments in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.3 Writing a Suite of Functions for Semantic Analysis . . . . . . . . . . . . . . . . . . . . . . . . 52
7.3.1 Analyzing a simpleJava Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
7.3.2 Analyzing simpleJava Expressions in C . . . . . . . . . . . . . . . . . . . . . . . . . . 52
7.3.3 Analyzing simpleJava Statements in C . . . . . . . . . . . . . . . . . . . . . . . . . . 54
7.4 Semantic Analyzer Project in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.4.1 Project Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.4.2 Project Difficulty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.4.3 Project “Gotcha”s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.4.4 Provided Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
8 Generating Abstract Assembly in C 59
8.1 Creating Abstract Assembly Trees in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
8.1.1 Assembly Language Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
8.1.2 Interface for Building Abstract Assembly Trees in C . . . . . . . . . . . . . . . . . . . 59
8.1.3 Adding Code to the Semantic Analyzer to Build Abstract Assembly Trees . . . . . . 62
8.1.4 Functions That Return Abstract Assembly Trees . . . . . . . . . . . . . . . . . . . . . 62
8.1.5 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
8.1.6 Function Prototypes and Function Definitions . . . . . . . . . . . . . . . . . . . . . . 64
8.2 Building Assembly Trees for simpleJava in C . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
8.2.1 Project Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
8.2.2 Project Difficulty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.2.3 Project “Gotcha’s” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.2.4 Provided Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
9 Code Generation 66
9.1 Project Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
9.1.1 Project Difficulty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
9.1.2 Project “Gotcha’s” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
9.1.3 Provided Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

 

Modern Compiler Design Free Lecture notes and eBook pdf download

    Attachment Lists

    If download doesn't start in application like IDM then press Alt + click on download button to start download
  • cimple mentation.pdf (Size: 326.48KB) Dowland
Share With Friends :  

No any Comment yet!