JAWAHARLAL NEHRU TECHNOLOGICAL UNIVERSITY HYDERABAD

EM733PE: COMPILER DESIGN

B.Tech IV Year I Semester (R16)

Course Objectives:

  • To understand the various phases in the design of a compiler.
  • To understand the design of top-down and bottom-up parsers.
  • To understand syntax directed translation schemes.
  • To introduce lex and yacc tools.
  • To learn to develop algorithms to generate code for a target machine.

Course Outcomes:

  • Ability to design, develop, and implement a compiler for any language.
  • Able to use lex and yacc tools for developing a scanner and a parser.
  • Able to design and implement LL and LR parsers.
  • Able to design algorithms to perform code optimization in order to improve the performance of a program in terms of space and time complexity.
  • Ability to design algorithms to generate machine code

UNIT - I

Introduction: Language Processors, 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 - II

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, Parser Generators.

UNIT - III

Syntax-Directed Translation: Syntax-Directed Definitions, Evaluation Orders for SDD's, Applications of Syntax-Directed Translation, Syntax-Directed Translation Schemes, and Implementing L-Attributed SDD's. Intermediate-Code Generation: Variants of Syntax Trees, Three-Address Code, Types and Declarations, Type Checking, Control Flow, Back patching, Switch-Statements, Intermediate Code for Procedures.

UNIT - IV

Run-Time Environments: Storage organization, 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,

R16 B.TECH ECM.

A Simple Code Generator, Peephole Optimization, Register Allocation and Assignment, Dynamic Programming Code-Generation.

UNIT - V

Machine-Independent Optimizations: 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 BOOKS

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

REFERENCE BOOKS

  • 1. Compiler Construction-Principles and Practice, Kenneth C Louden, Cengage Learning.
  • 2. Modern compiler implementation in C, Andrew W Appel, Revised edition, Cambridge University Press.
  • 3. The Theory and Practice of Compiler writing, J. P. Tremblay and P. G. Sorenson, TMH
  • 4. Writing compilers and interpreters, R. Mak, 3rd edition, Wiley student edition.
  • 5. lex & yacc – John R. Levine, Tony Mason, Doug Brown, O’reilly R16 B.TECH ECM.

Loading Question Papers

Fetching data from database...