Compiler Design Unleashed

Introduction To Compilers

  • Compilers And Translators
  • Why Do We Need Translators?
  • The Structure Of A Compiler
  • Lexical Analysis
  • Syntax Analysis
  • Intermediate Code Generation
  • Optimization
  • Code Generation
  • Book Keeping
  • Error Handling
  • Compiler-Writing Tools

Programming Languages

  • High-Level Programming Language
  • Definition of Programming Language
  • The Lexical and Syntactic Structure of a language
  • Data Elements
  • Data Structures
  • Operators
  • Assignments
  • Statements
  • Program Units
  • Data Environments
  • Parameter Transmission
  • Storage Management

Finite Automata and Lexical Analysis

  • The role of the lexical analyzer
  • Simple approach to design of a lexical analyzer
  • Regular Expressions
  • Finite Automata
  • conversion of regular expression to finite automata
  • Minimizing the number of states of a DFA
  • A language for specifying lexical analyzer
  • Implementing a lexical analyzer

The Syntactic Specification of Programming Languages

  • Context Free Grammars
  • Derivation and Parse Trees
  • Capability of context free Grammars

Basic Parsing Techniques

  • Parsers
  • Shift-reduce Parsing
  • Operator-precedence parsing
  • Top-down parsing
  • Predictive Parsers

Automatic Construction of Efficient Parsers

  • LR parsers
  • The canonical collection of LR(0) items
  • constructing SLR parsing tables
  • CONSTRUCTING CANONICAL LR parsing tables
  • constructing SLR parsing tables
  • constructing LALR parsing tables
  • Using Ambiguous grammars
  • Implementation of LR parsing Tables

Syntax directed translations

  • Syntax directed translation schemes and Implementation
  • Intermediate Code
  • Parse Tree and Syntax Trees
  • Three-Address code, quadruples, and triples
  • Translation of assignment statements
  • Boolean Expression
  • Statements that alter the flow of control
  • Translation with a top-down parser

Translations – a broader approach

  • Array reference in arithmetic expressions
  • Procedure Calls
  • Declarations
  • Case Statements
  • Record Structures

Symbol Tables

  • The contents of a symbol tables
  • Data structure for a symbol table
  • Representing Scope information

More on storage – Run time storage administration

  • Implementation of a simple stack allocation scheme
  • Implementation of a block structured language
  • Storage allocation in a block structed language

Error detection and recovery

  • Errors
  • Lexical-phase errors
  • syntactic-phase errors
  • Semantic errors

Introduction to Code optimization

  • The principal sources of optimization
  • Loop optimization
  • The DAG representation of basic blocks
  • Value numbers and algebraic laws
  • Global data-flow analysis

More on loop optimization

  • Dominators
  • Reducible Flow graphs
  • Depth-first search
  • Loop-invariant computations
  • Induction variable elimination
  • Some other loop optimization
  • Code Generation
  • Object Programs
  • Problems in Code Generations
  • Register allocation and assignment
  • Code generation from DAG’s

PROJECT

  • Constructing A ‘C’ Compiler

Comments are closed.