JNTUH Compiler Design syllabus CS 3-2 Sem R18 CS602PC

Unit-1 Introduction

Introduction:

The structure of a compiler, the science of building a compiler, programming language basics

 

Lexical Analysis:

The Role of the Lexical Analyzer, Input Buffering, Recognition of Tokens, The Lexical-Analyzer Generator Lex, Finite Automata, From Regular Expressions to Automata, Design of a Lexical-Analyzer Generator, Optimization of DFA-Based Pattern Matchers.

Unit-2 Syntax Analysis

Syntax Analysis:

Introduction, Context-Free Grammars, Writing a Grammar, Top-Down Parsing, Bottom-Up Parsing, Introduction to LR Parsing: Simple LR, More Powerful LR Parsers, Using Ambiguous Grammars and Parser Generators.

Unit-3 Syntax-Directed Translation

Syntax-Directed Translation:

Syntax-Directed Definitions, Evaluation Orders for SDD's, Applications of Syntax-Directed Translation, Syntax-Directed Translation Schemes, Implementing L-Attributed SDD's.

 

Intermediate-Code Generation:

Variants of Syntax Trees, Three-Address Code, Types and Declarations, Type Checking, Control Flow, Switch-Statements, Intermediate Code for Procedures.

Unit-4 Run-Time Environments

Run-Time Environments:

Stack Allocation of Space, Access to Nonlocal Data on the Stack, Heap Management, Introduction to Garbage Collection, Introduction to Trace-Based Collection.

 

Code Generation:

Issues in the Design of a Code Generator, The Target Language, Addresses in the Target Code, Basic Blocks and Flow Graphs, Optimization of Basic Blocks, A Simple Code Generator, Peephole Optimization, Register Allocation and Assignment, Dynamic Programming Code-Generation.

Unit-5 Machine-Independent Optimization

Machine-Independent Optimization:

The Principal Sources of Optimization, Introduction to Data-Flow Analysis, Foundations of Data-Flow Analysis, Constant Propagation, Partial-Redundancy Elimination, Loops in Flow Graphs.

 

TEXT BOOK:

1. Compilers: Principles, Techniques and Tools, Second Edition, Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffry D. Ullman.

 

REFERENCES:

1. Lex & Yacc – John R. Levine, Tony Mason, Doug Brown, O’reilly

2. Compiler Construction, Louden, Thomson.

 

Course Outcomes:

1. Demonstrate the ability to design a compiler given a set of language features.

2. Demonstrate the the knowledge of patterns, tokens & regular expressions for lexical analysis.

3. Acquire skills in using lex tool & yacc tool for devleoping a scanner and parser.

4. Design and implement LL and LR parsers

5. Design algorithms to do code optimization in order to improve the performance of a program in terms of space and time complexity.

6. Design algorithms to generate machine code.