Introduction to Compiler
Construction
Robert van Engelen
http://www.cs.fsu.edu/~engelen/courses/COP5621
COP5621 Compiler Construction
Copyright Robert van Engelen, Florida State University, 2005
Syllabus
• Prerequisites: COP4020
• Textbook: “Compilers: Principles, Techniques,
and Tools” by Aho, Sethi, and Ullman
• Other material: “The JavaTM Virtual Machine
Specification”, 2nd edition and class handouts
• Four exams (60%) and continuous programming
assignments (40%)
• For more up-to-date info:
http://www.cs.fsu.edu/~engelen/courses/COP5621
Assignments and Schedule
http://www.cs.fsu.edu/~engelen/courses/COP5621/assign.html
Objectives
• Know how to build a compiler for a (simplified)
(programming) language
• Know how to use compiler construction tools,
such as generators for scanners and parsers
• Be familiar with virtual machines, such as the
JVM and Java bytecode
• Be able to write LL(1), LR(1), and LALR(1)
grammars (for new languages)
• Be familiar with compiler analysis and
optimization techniques
• … learn how to work on a larger software project!
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
Compilers and Interpreters
(cont’d)
Interpreter
Source
Program
Input
Output
Error messages
• “Interpretation”
– Performing the operations implied by the
source program
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
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)
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
The Phases of a Compiler
Phase Output Sample
Programmer Source string A=B+C;
Scanner (performs lexical
analysis)
Token string ‘A’, ‘=’, ‘B’, ‘+’, ‘C’, ‘;’
And symbol table for identifiers
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)
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
The Grouping of Phases
• Compiler front and back ends:
– Analysis (machine independent front end)
– Synthesis (machine dependent back end)
• Passes
– A collection of phases may be repeated 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
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
Outline
• Ch. 1: Introduction
• Ch. 2: A simple One-Pass Compiler for the JVM
• Ch. 3: Lexical Analysis and Lex/Flex
• Ch. 4: Syntax Analysis and Yacc/Bison
• Ch. 5: Syntax-Directed Translation
• Ch. 6: Type Checking
• Ch. 7: Run-Time Environments
• Ch. 8: Intermediate Code Generation
• Ch. 9: Code Generation
• Ch.10: Code Optimization

More Related Content

PPT
Chapter 1
PPT
Ch1_4.ppt
PPT
Ch1.ppt
PPT
Ch1 (1).ppt
PPT
PPT
compiler construvtion aaaaaaaaaaaaaaaaaads
Chapter 1
Ch1_4.ppt
Ch1.ppt
Ch1 (1).ppt
compiler construvtion aaaaaaaaaaaaaaaaaads

Similar to Ch1 (1).ppt (20)

PPT
1 - Introduction to Compilers.ppt
PPTX
Compiler Design Slides for Third Year Computer Science and Engineering
PPT
Compiler design
PPT
Cd econtent link1
PDF
1 introduction to compiler
PDF
Lecture 1 Compiler design , computation
PDF
CD NOTErvvtvvevbvtgv4tgtgtgtgtvefeveS.pdf
PDF
Lecture 01 introduction to compiler
PPT
Compiler design lessons notes from Semester
PPT
Chapter One
PPTX
Lecture 1 introduction to language processors
PDF
Compiler design Introduction
PDF
Compiler design
PDF
Structure-Compiler-phases information about basics of compiler. Pdfpdf
PPT
Compiler Design Unit 1
PPTX
Compiler Construction from very basic start
PPTX
Compiler Construction Introduction Slide PPT
PDF
Compilers Principles, Practice & Tools Compilers
PPTX
Compilers.pptx
PDF
Introduction to compiler development
1 - Introduction to Compilers.ppt
Compiler Design Slides for Third Year Computer Science and Engineering
Compiler design
Cd econtent link1
1 introduction to compiler
Lecture 1 Compiler design , computation
CD NOTErvvtvvevbvtgv4tgtgtgtgtvefeveS.pdf
Lecture 01 introduction to compiler
Compiler design lessons notes from Semester
Chapter One
Lecture 1 introduction to language processors
Compiler design Introduction
Compiler design
Structure-Compiler-phases information about basics of compiler. Pdfpdf
Compiler Design Unit 1
Compiler Construction from very basic start
Compiler Construction Introduction Slide PPT
Compilers Principles, Practice & Tools Compilers
Compilers.pptx
Introduction to compiler development
Ad

Recently uploaded (20)

PDF
My India Quiz Book_20210205121199924.pdf
PPTX
ELIAS-SEZIURE AND EPilepsy semmioan session.pptx
PDF
MBA _Common_ 2nd year Syllabus _2021-22_.pdf
PDF
Chinmaya Tiranga quiz Grand Finale.pdf
PPTX
History, Philosophy and sociology of education (1).pptx
PDF
International_Financial_Reporting_Standa.pdf
PDF
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
PPTX
Chinmaya Tiranga Azadi Quiz (Class 7-8 )
PDF
Vision Prelims GS PYQ Analysis 2011-2022 www.upscpdf.com.pdf
PDF
Environmental Education MCQ BD2EE - Share Source.pdf
DOC
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
DOCX
Cambridge-Practice-Tests-for-IELTS-12.docx
PPTX
Share_Module_2_Power_conflict_and_negotiation.pptx
PDF
BP 704 T. NOVEL DRUG DELIVERY SYSTEMS (UNIT 2).pdf
PDF
Practical Manual AGRO-233 Principles and Practices of Natural Farming
PPTX
20th Century Theater, Methods, History.pptx
PDF
advance database management system book.pdf
PDF
Hazard Identification & Risk Assessment .pdf
PDF
Paper A Mock Exam 9_ Attempt review.pdf.
PDF
CISA (Certified Information Systems Auditor) Domain-Wise Summary.pdf
My India Quiz Book_20210205121199924.pdf
ELIAS-SEZIURE AND EPilepsy semmioan session.pptx
MBA _Common_ 2nd year Syllabus _2021-22_.pdf
Chinmaya Tiranga quiz Grand Finale.pdf
History, Philosophy and sociology of education (1).pptx
International_Financial_Reporting_Standa.pdf
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
Chinmaya Tiranga Azadi Quiz (Class 7-8 )
Vision Prelims GS PYQ Analysis 2011-2022 www.upscpdf.com.pdf
Environmental Education MCQ BD2EE - Share Source.pdf
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
Cambridge-Practice-Tests-for-IELTS-12.docx
Share_Module_2_Power_conflict_and_negotiation.pptx
BP 704 T. NOVEL DRUG DELIVERY SYSTEMS (UNIT 2).pdf
Practical Manual AGRO-233 Principles and Practices of Natural Farming
20th Century Theater, Methods, History.pptx
advance database management system book.pdf
Hazard Identification & Risk Assessment .pdf
Paper A Mock Exam 9_ Attempt review.pdf.
CISA (Certified Information Systems Auditor) Domain-Wise Summary.pdf
Ad

Ch1 (1).ppt

  • 1. Introduction to Compiler Construction Robert van Engelen http://www.cs.fsu.edu/~engelen/courses/COP5621 COP5621 Compiler Construction Copyright Robert van Engelen, Florida State University, 2005
  • 2. Syllabus • Prerequisites: COP4020 • Textbook: “Compilers: Principles, Techniques, and Tools” by Aho, Sethi, and Ullman • Other material: “The JavaTM Virtual Machine Specification”, 2nd edition and class handouts • Four exams (60%) and continuous programming assignments (40%) • For more up-to-date info: http://www.cs.fsu.edu/~engelen/courses/COP5621
  • 4. Objectives • Know how to build a compiler for a (simplified) (programming) language • Know how to use compiler construction tools, such as generators for scanners and parsers • Be familiar with virtual machines, such as the JVM and Java bytecode • Be able to write LL(1), LR(1), and LALR(1) grammars (for new languages) • Be familiar with compiler analysis and optimization techniques • … learn how to work on a larger software project!
  • 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
  • 6. Compilers and Interpreters (cont’d) Interpreter Source Program Input Output Error messages • “Interpretation” – Performing the operations implied by the source program
  • 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
  • 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)
  • 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
  • 10. The Phases of a Compiler Phase Output Sample Programmer Source string A=B+C; Scanner (performs lexical analysis) Token string ‘A’, ‘=’, ‘B’, ‘+’, ‘C’, ‘;’ And symbol table for identifiers 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) 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: – Analysis (machine independent front end) – Synthesis (machine dependent back end) • Passes – A collection of phases may be repeated 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
  • 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
  • 13. Outline • Ch. 1: Introduction • Ch. 2: A simple One-Pass Compiler for the JVM • Ch. 3: Lexical Analysis and Lex/Flex • Ch. 4: Syntax Analysis and Yacc/Bison • Ch. 5: Syntax-Directed Translation • Ch. 6: Type Checking • Ch. 7: Run-Time Environments • Ch. 8: Intermediate Code Generation • Ch. 9: Code Generation • Ch.10: Code Optimization