Your SlideShare is downloading. ×
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply



Published on

Published in: Technology

1 Like
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Introduction to Compiler Construction Robert van Engelen COP5621 Compiler Construction Copyright Robert van Engelen, Florida State University, 2007-2009
  • 2. Syllabus
    • Prerequisites: COP4020 or equivalent
    • Textbook: “ Compilers: Principles, Techniques, and Tools ” by Aho, Sethi, and Ullman, 1 st or 2 nd editions
    • Other material: “ The Java TM Virtual Machine Specification ”, 2 nd edition and class handouts
    • Four exams (60%) and four programming assignments (40%)
    COP5621 Fall 2009
  • 3. Syllabus, Assignments, and Schedule COP5621 COP5621 Fall 2009
  • 4. Objectives
    • Be able to build a compiler for a (simplified) (programming) language
    • Know how to use compiler construction tools, such as generators of scanners and parsers
    • Be familiar with virtual machines, such as the JVM and Java bytecode
    • Be able to define LL(1), LR(1), and LALR(1) grammars
    • Be familiar with compiler analysis and optimization techniques
    • … learn how to work on a larger software project!
    COP5621 Fall 2009
  • 5. Compilers and Interpreters
    • “ Compilation ”
      • Translation of a program written in a source language into a semantically equivalent program written in a target language
    Compiler Error messages Source Program Target Program Input Output COP5621 Fall 2009
  • 6. Compilers and Interpreters (cont’d)
    • “ Interpretation ”
      • Performing the operations implied by the source program
    Interpreter Source Program Input Output Error messages COP5621 Fall 2009
  • 7. 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
    COP5621 Fall 2009
  • 8. Other Tools that Use the Analysis-Synthesis Model
    • Editors (syntax highlighting)
    • Pretty printers (e.g. Doxygen)
    • Static checkers (e.g. Lint and Splint)
    • Interpreters
    • Text formatters (e.g. TeX and LaTeX)
    • Silicon compilers (e.g. VHDL)
    • Query interpreters/compilers (Databases)
    COP5621 Fall 2009
  • 9. Preprocessors, Compilers, Assemblers, and Linkers Preprocessor Compiler Assembler Linker Skeletal Source Program Source Program Target Assembly Program Relocatable Object Code Absolute Machine Code Libraries and Relocatable Object Files Try for example: gcc -v myprog.c COP5621 Fall 2009
  • 10. The Phases of a Compiler COP5621 Fall 2009 Phase Output Sample Programmer (source code producer) Source string A=B+C; Scanner (performs lexical analysis ) Token string ‘ A’ , ‘=’ , ‘B’ , ‘+’ , ‘C’ , ‘;’ And symbol table with names Parser (performs syntax analysis based on the grammar of the programming language) Parse tree or abstract syntax tree ; | = / A + / B C Semantic analyzer (type checking, etc) Annotated parse tree or abstract syntax tree Intermediate code generator Three-address code, quads, or RTL int2fp B t1 + t1 C t2 := t2 A Optimizer Three-address code, quads, or RTL int2fp B t1 + t1 #2.3 A Code generator Assembly code MOVF #2.3,r1 ADDF2 r1,r2 MOVF r2,A Peephole optimizer Assembly code ADDF2 #2.3,r2 MOVF r2,A
  • 11. The Grouping of Phases
    • Compiler front and back ends :
      • Front end: analysis ( machine independent )
      • Back end: synthesis ( machine dependent )
    • 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
    COP5621 Fall 2009
  • 12. Compiler-Construction Tools
    • Software development tools are available to implement one or more compiler phases
      • Scanner generators
      • Parser generators
      • Syntax-directed translation engines
      • Automatic code generators
      • Data-flow engines
    COP5621 Fall 2009
  • 13. Outline
    • Introduction
    • A simple One-Pass Compiler for the JVM
    • Lexical Analysis and Lex/Flex
    • Syntax Analysis and Yacc/Bison
    • Syntax-Directed Translation
    • Static Semantics and Type Checking
    • Run-Time Environments
    • Intermediate Code Generation
    • Target Code Generation
    • Code Optimization
    COP5621 Fall 2009