SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
COMPILER DESIGN
INTRODUCTION
Richa Sharma 1
MAIN REFERENCE BOOK:
• COMPILERS – PRINCIPLES, TECHNIQUES AND TOOLS, SECOND EDITION BY
ALFRED V. AHO, RAVI SETHI, JEFFERY D. ULLMAN
• PRINCIPLES OF COMPILER DESIGN BY V R RAGHAVAN .
Richa Sharma 2
COMPILER
• IT’S A SOFTWARE UTILITY THAT TRANSLATED HIGH LANGUAGE CODE INTO TARGET LANGUAGE
CODE ,AS COMPUTER DOESN’T UNDERSTAND HIGH LANGUAGE.
DATA
OUTPUT
• IMPORTANT ROLE OF COMPILER IS TO REPORT THE ERROR IN THE SOURCE PROGRAM BY
TRANSLATING THE PROGRAM IN ONE GO.
• STRUCTURE OF THE COMPILER IS OFFLINE, MEANING THAT WE PRE-PROCESS THE PROGRAM FIRST
AND CREATES AND EXECUTABLE CODE AND THIS CODE CAN RUN ON DIFFERENT INPUTS OR DATA .
Richa Sharma 3
COMPILER
Source
Program
Target
Program
INTERPRETER
• IT’S ANOTHER SOFTWARE UTILITY THAT TRANSLATES HIGH LANGUAGE CODE INTO TARGET
LANGUAGE CODE LINE BY LINE UNLIKE COMPILER .
OUTPUT
• INTERPRETER IS ONLINE MODE, IN WHICH DATA AND SOURCE PROGRAM ARE EXECUTED
SIMULTANEOUSLY GIVING THE OUTPUT .NO PRE-PROCESSING IS DONE EARLIER.
Richa Sharma 4
COMPILER
Source Program
Data
EXAMPLES
MOST LANGUAGES ARE USUALLY THOUGHT OF AS USING EITHER
ONE OR THE OTHER:
• COMPILERS: FORTRAN, COBOL, C, C++, PASCAL, PL/1
• INTERPRETERS: LISP, SCHEME, BASIC, APL, PERL, PYTHON,
SMALLTALK
Richa Sharma 5
Preprocessor
Compiler
Assembler
Linker/Loader
Source program
Modified Source program
Target assembly program
Relocatable machine code
Target machine code
Library filesRicha Sharma
STEPS FOR LANGUAGE PROCESSING SYSTEM.
PHASES OF COMPILER
THE TRANSLATION OF INPUT FILE INTO TARGET CODE IS DIVIDED INTO 2 STAGES :
1. FRONT END (ANALYSIS): TRANSFORM SOURCE CODE INTO INTERMEDIATE CODE ALSO
CALLED INTERMEDIATE REPRESENTATION (IR) . IT’S A MACHINE-INDEPENDENT
REPRESENTATION.
2. BACK END (SYNTHESIS): IT TAKES IR AND GENERATES THE TARGET ASSEMBLY LANGUAGE
PROGRAM.
FRONT END BACK END
1) LEXICAL ANALYZER (SCANNING) 5) CODE OPTIMIZATION
2) SYNTAX ANALYZER (PARSING) 6) MACHINE CODE GENERATION
3) SEMANTIC ANALYZER
4) INTERMEDIATE CODE GENERATION
Richa Sharma 7
PHASES OF COMPILER
Richa Sharma 8
Symbol table Error handler
Front End
Back End
LEXICAL ANALYSIS/SCANNING
 READS THE STREAM OF CHARACTERS MAKING UP THE SOURCE PROGRAM AND GROUP THE
CHARACTERS INTO MEANINGFUL SEQUENCES CALLED LEXEMES.
 LEXEME ---- TOKEN
< TOKEN-NAME, ATTRIBUTE-VALUE>
 TOKEN NAME – IS AN ABSTRACT SYMBOL USED DURING SYNTAX ANALYSIS.
 ATTRIBUTE VALUE – POINTS TO AN ENTRY IN THE SYMBOL TABLE FOR THIS TOKEN.
POSITION = INITIAL + RATE * 60
<ID,1> < = > <ID,2> < +> <ID,3> < *> <60>
Richa Sharma 9
SYNTAX ANALYSIS/PARSING
• RECOGNIZES “SENTENCES” IN THE PROGRAM USING THE SYNTAX OF THE LANGUAGE
• CREATES TREE LIKE STRUCTURE FROM TOKENS (SYNTAX TREE)
• NODE REPRESENTS OPERATION
• CHILDREN REPRESENTS ARGUMENTS
• REPRESENTS THE SYNTACTIC STRUCTURE OF THE PROGRAM, HIDING A FEW DETAILS THAT ARE
IRRELEVENT TO LATER PHASES OF COMPILATION.
Richa Sharma 10
SEMANTIC ANALYSIS
• INFERS INFORMATION ABOUT THE PROGRAM USING THE SEMANTICS OF THE LANGUAGE
• USES SYNTAX TREE AND INFO. IN SYMBOL TABLE TO CHECK FOR SEMANTIC CONSISTENCY.
• GATHERS TYPE INFO. AND SAVES IT IN EITHER THE SYNTAX TREE OR SYMBOL TABLE FOR USE IN
ICG
• TYPE CHECKING – CHECKS THAT EACH OPERATOR HAS MATCHING OPERANDS. E.G ARRAY
INDEX SHOULD BE INTEGER.
• TYPE CONVERSIONS CALLED COERCIONS
• BINARY ARITHMETIC OPERATOR (INT OR FLOAT)
• IF 6+7.5, THEN CONVERT 6 TO 6.5
Richa Sharma 11
INTERMEDIATE CODE GENERATION
• GENERATES “ABSTRACT” CODE BASED ON THE SYNTACTIC STRUCTURE OF THE PROGRAM AND THE SEMANTIC
INFORMATION FROM PHASE 2.
 SYNTAX TREE ARE ALSO IR
 COMPILER MAY PRODUCE EXPLICIT IR
 IR HAS TWO PROPERTIES:
 EASY TO PRODUCE
 EASY TO TRANSLATE INTO TARGET MACHINE
 E.G IR – THREE ADDRESS CODE
 T1 = INTTOFLOAT(60)
 T2 = ID3 * T1
 T3 = ID2 + T3
 ID1 = T3
Richa Sharma 12
CODE OPTIMIZATION
• REFINES THE GENERATED CODE USING A SERIES OF OPTIMIZING TRANSFORMATIONS.
• Eg: REMOVING DEAD CODE .
REDUCING ITERATIONS AND LOOPS ETC..
• APPLY A SERIES OF TRANSFORMATIONS TO IMPROVE THE TIME AND SPACE EFFICIENCY OF THE
GENERATED CODE.
• PEEPHOLE OPTIMIZATIONS: GENERATE NEW INSTRUCTIONS BY COMBINING/EXPANDING ON
A SMALL NUMBER OF CONSECUTIVE INSTRUCTIONS.
• GLOBAL OPTIMIZATIONS: REORDER, REMOVE OR ADD INSTRUCTIONS TO CHANGE THE
STRUCTURE OF GENERATED CODE.
Richa Sharma 13
CODE GENEARTION
• MAP INSTRUCTIONS IN THE INTERMEDIATE CODE TO SPECIFIC MACHINE INSTRUCTIONS.
• SUPPORTS STANDARD OBJECT FILE FORMATS.
• GENERATES SUFFICIENT INFORMATION TO ENABLE SYMBOLIC DEBUGGING.
 IR -> CG -> TARGET LANGUAGE (E.G MACHINE CODE)
 REGISTERS AND MEMORY LOCATIONS ARE SELECTED FOR EACH VARIABLE USED BY THE PROGRAM.
 LDF R2, ID3
 MULF R2, R2, #60.0
 LDF R1, ID2
 ADDF R1, R1, R2
 STF ID1, R1
 R1,R2 – REGISTERS F – FLOATING POINT NUMBERS # - IMMEDIATE CONST.
Richa Sharma
14
SYMBOL TABLE
• SYMBOL TABLE – DATA STRUCTURE WITH A RECORD FOR EACH IDENTIFIER AND ITS ATTRIBUTES
• ALL THE PHASES ARE CONNECTED TO THE SYMBOL TABLE.
• ATTRIBUTES INCLUDE STORAGE ALLOCATION, TYPE, SCOPE, ETC
• ALL THE COMPILER PHASES INSERT AND MODIFY THE SYMBOL TABLE
Richa Sharma 15
Richa Sharma
16
OVERALL WORKING OF COMPILER PHASES
COMPILER CONSTRUCTION TOOLS
• DEVELOPER MAY USE MODERN SOFTWARE DEVELOPMENT ENVIRONMENT CONTAINING
TOOLS Ex: LANGUAGE EDITORS, VERSION MANAGERS, TEC.
• SOME SPECIAL TOOLS CAN ALSO BE USED. THESE TOOLS ARE THOSE WHICH HIDE THE DETAILS
OF GENERATION ALGORITHM AND PRODUCE COMPONENTS THAT CAN BE EASILY INTEGRATED
TO REMAINDER OF THE COMPILER.
• PARSER GENERATOR: TAKES GRAMMAR DESCRIPTION AND PRODUCES SYNTAX ANALYSER.
• SCANNER GENERATOR: TAKES REGULAR EXPRESSION AND PRODUCES LEXICAL ANALYSER.
• AUTOMATIC CODE- GENERATOR : TAKES INTERMEDIATE AND CONVERT TO MACHINE
LANGUAGE)
• DATA FLOW ANALYSIS ENGINES (FOR OPTIMIZATION)
• COMPILER CONSTRUCTION TOOLKIT.
Richa Sharma 17
APPLICATION OF COMPILER TECHNOLOGY
• IMPLEMENTATION OF HIGH LEVEL PROGRAMMING LANGUAGES
- CONCEPTS OF OOPS
• OPTIMIZATION FOR COMPUTER ARCHITECTURE
- PARALLELISM
- MEMORY HIERARCHIES OF MACHINES(REG, ARRAYS ETC)
• DESIGN OF NEW COMPUTER ARCHITECURES
- RISC
- CISC
- SIMD ETC
• PROGRAM TRANSLATIONS
• SOFTWARE PRODUCTIVITY TOOLS
Richa Sharma
18
Richa Sharma 19

Mais conteúdo relacionado

Mais procurados

Unit1 principle of programming language
Unit1 principle of programming languageUnit1 principle of programming language
Unit1 principle of programming language
Vasavi College of Engg
 

Mais procurados (20)

Lecture 01 introduction to compiler
Lecture 01 introduction to compilerLecture 01 introduction to compiler
Lecture 01 introduction to compiler
 
Introduction to Compiler Construction
Introduction to Compiler Construction Introduction to Compiler Construction
Introduction to Compiler Construction
 
Single pass assembler
Single pass assemblerSingle pass assembler
Single pass assembler
 
Introduction to algorithms
Introduction to algorithmsIntroduction to algorithms
Introduction to algorithms
 
Top down parsing
Top down parsingTop down parsing
Top down parsing
 
Compiler Design
Compiler DesignCompiler Design
Compiler Design
 
Symbol table in compiler Design
Symbol table in compiler DesignSymbol table in compiler Design
Symbol table in compiler Design
 
Unit1 principle of programming language
Unit1 principle of programming languageUnit1 principle of programming language
Unit1 principle of programming language
 
Compiler Construction | Lecture 1 | What is a compiler?
Compiler Construction | Lecture 1 | What is a compiler?Compiler Construction | Lecture 1 | What is a compiler?
Compiler Construction | Lecture 1 | What is a compiler?
 
Assemblers: Ch03
Assemblers: Ch03Assemblers: Ch03
Assemblers: Ch03
 
Phases of Compiler
Phases of CompilerPhases of Compiler
Phases of Compiler
 
Syntax Analysis in Compiler Design
Syntax Analysis in Compiler Design Syntax Analysis in Compiler Design
Syntax Analysis in Compiler Design
 
Introduction to Compiler design
Introduction to Compiler design Introduction to Compiler design
Introduction to Compiler design
 
Compiler Construction introduction
Compiler Construction introductionCompiler Construction introduction
Compiler Construction introduction
 
LR(1) and SLR(1) parsing
LR(1) and SLR(1) parsingLR(1) and SLR(1) parsing
LR(1) and SLR(1) parsing
 
Lexical analysis - Compiler Design
Lexical analysis - Compiler DesignLexical analysis - Compiler Design
Lexical analysis - Compiler Design
 
Specification-of-tokens
Specification-of-tokensSpecification-of-tokens
Specification-of-tokens
 
Introduction to systems programming
Introduction to systems programmingIntroduction to systems programming
Introduction to systems programming
 
Top down parsing
Top down parsingTop down parsing
Top down parsing
 
Lexical Analysis - Compiler Design
Lexical Analysis - Compiler DesignLexical Analysis - Compiler Design
Lexical Analysis - Compiler Design
 

Semelhante a Compiler Design Introduction

2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx
2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx
2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx
venkatapranaykumarGa
 
1-Phases of compiler-26-04-2023.pptx
1-Phases of compiler-26-04-2023.pptx1-Phases of compiler-26-04-2023.pptx
1-Phases of compiler-26-04-2023.pptx
venkatapranaykumarGa
 
Embedded system design process
Embedded system design processEmbedded system design process
Embedded system design process
Rayees CK
 
Introduction to compiler
Introduction to compilerIntroduction to compiler
Introduction to compiler
Abha Damani
 

Semelhante a Compiler Design Introduction (20)

Cpcs302 1
Cpcs302  1Cpcs302  1
Cpcs302 1
 
Concept of compiler in details
Concept of compiler in detailsConcept of compiler in details
Concept of compiler in details
 
Chapter 1.pptx
Chapter 1.pptxChapter 1.pptx
Chapter 1.pptx
 
Intermediate Representation in Compiler Construction
Intermediate Representation in Compiler ConstructionIntermediate Representation in Compiler Construction
Intermediate Representation in Compiler Construction
 
Compiler
CompilerCompiler
Compiler
 
Single Pass Assembler
Single Pass AssemblerSingle Pass Assembler
Single Pass Assembler
 
what is compiler and five phases of compiler
what is compiler and five phases of compilerwhat is compiler and five phases of compiler
what is compiler and five phases of compiler
 
Phases of compiler
Phases of compilerPhases of compiler
Phases of compiler
 
2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx
2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx
2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx
 
Lecture 16 17 code-generation
Lecture 16 17 code-generationLecture 16 17 code-generation
Lecture 16 17 code-generation
 
Techniques & applications of Compiler
Techniques & applications of CompilerTechniques & applications of Compiler
Techniques & applications of Compiler
 
1-Phases of compiler-26-04-2023.pptx
1-Phases of compiler-26-04-2023.pptx1-Phases of compiler-26-04-2023.pptx
1-Phases of compiler-26-04-2023.pptx
 
Compiler design
Compiler designCompiler design
Compiler design
 
Cd econtent link1
Cd econtent link1Cd econtent link1
Cd econtent link1
 
Embedded system design process
Embedded system design processEmbedded system design process
Embedded system design process
 
Introduction to compiler
Introduction to compilerIntroduction to compiler
Introduction to compiler
 
Principles of Compiler Design
Principles of Compiler DesignPrinciples of Compiler Design
Principles of Compiler Design
 
Compier Design_Unit I.ppt
Compier Design_Unit I.pptCompier Design_Unit I.ppt
Compier Design_Unit I.ppt
 
Compier Design_Unit I.ppt
Compier Design_Unit I.pptCompier Design_Unit I.ppt
Compier Design_Unit I.ppt
 
lec00-Introduction.pdf
lec00-Introduction.pdflec00-Introduction.pdf
lec00-Introduction.pdf
 

Último

Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
amitlee9823
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Último (20)

Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
 
Online banking management system project.pdf
Online banking management system project.pdfOnline banking management system project.pdf
Online banking management system project.pdf
 
chapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringchapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineering
 
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the start
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdf
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
 
Intro To Electric Vehicles PDF Notes.pdf
Intro To Electric Vehicles PDF Notes.pdfIntro To Electric Vehicles PDF Notes.pdf
Intro To Electric Vehicles PDF Notes.pdf
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
Block diagram reduction techniques in control systems.ppt
Block diagram reduction techniques in control systems.pptBlock diagram reduction techniques in control systems.ppt
Block diagram reduction techniques in control systems.ppt
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leap
 
data_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfdata_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdf
 
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
 
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Unit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdfUnit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdf
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
Work-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxWork-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptx
 
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced LoadsFEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
 

Compiler Design Introduction

  • 2. MAIN REFERENCE BOOK: • COMPILERS – PRINCIPLES, TECHNIQUES AND TOOLS, SECOND EDITION BY ALFRED V. AHO, RAVI SETHI, JEFFERY D. ULLMAN • PRINCIPLES OF COMPILER DESIGN BY V R RAGHAVAN . Richa Sharma 2
  • 3. COMPILER • IT’S A SOFTWARE UTILITY THAT TRANSLATED HIGH LANGUAGE CODE INTO TARGET LANGUAGE CODE ,AS COMPUTER DOESN’T UNDERSTAND HIGH LANGUAGE. DATA OUTPUT • IMPORTANT ROLE OF COMPILER IS TO REPORT THE ERROR IN THE SOURCE PROGRAM BY TRANSLATING THE PROGRAM IN ONE GO. • STRUCTURE OF THE COMPILER IS OFFLINE, MEANING THAT WE PRE-PROCESS THE PROGRAM FIRST AND CREATES AND EXECUTABLE CODE AND THIS CODE CAN RUN ON DIFFERENT INPUTS OR DATA . Richa Sharma 3 COMPILER Source Program Target Program
  • 4. INTERPRETER • IT’S ANOTHER SOFTWARE UTILITY THAT TRANSLATES HIGH LANGUAGE CODE INTO TARGET LANGUAGE CODE LINE BY LINE UNLIKE COMPILER . OUTPUT • INTERPRETER IS ONLINE MODE, IN WHICH DATA AND SOURCE PROGRAM ARE EXECUTED SIMULTANEOUSLY GIVING THE OUTPUT .NO PRE-PROCESSING IS DONE EARLIER. Richa Sharma 4 COMPILER Source Program Data
  • 5. EXAMPLES MOST LANGUAGES ARE USUALLY THOUGHT OF AS USING EITHER ONE OR THE OTHER: • COMPILERS: FORTRAN, COBOL, C, C++, PASCAL, PL/1 • INTERPRETERS: LISP, SCHEME, BASIC, APL, PERL, PYTHON, SMALLTALK Richa Sharma 5
  • 6. Preprocessor Compiler Assembler Linker/Loader Source program Modified Source program Target assembly program Relocatable machine code Target machine code Library filesRicha Sharma STEPS FOR LANGUAGE PROCESSING SYSTEM.
  • 7. PHASES OF COMPILER THE TRANSLATION OF INPUT FILE INTO TARGET CODE IS DIVIDED INTO 2 STAGES : 1. FRONT END (ANALYSIS): TRANSFORM SOURCE CODE INTO INTERMEDIATE CODE ALSO CALLED INTERMEDIATE REPRESENTATION (IR) . IT’S A MACHINE-INDEPENDENT REPRESENTATION. 2. BACK END (SYNTHESIS): IT TAKES IR AND GENERATES THE TARGET ASSEMBLY LANGUAGE PROGRAM. FRONT END BACK END 1) LEXICAL ANALYZER (SCANNING) 5) CODE OPTIMIZATION 2) SYNTAX ANALYZER (PARSING) 6) MACHINE CODE GENERATION 3) SEMANTIC ANALYZER 4) INTERMEDIATE CODE GENERATION Richa Sharma 7
  • 8. PHASES OF COMPILER Richa Sharma 8 Symbol table Error handler Front End Back End
  • 9. LEXICAL ANALYSIS/SCANNING  READS THE STREAM OF CHARACTERS MAKING UP THE SOURCE PROGRAM AND GROUP THE CHARACTERS INTO MEANINGFUL SEQUENCES CALLED LEXEMES.  LEXEME ---- TOKEN < TOKEN-NAME, ATTRIBUTE-VALUE>  TOKEN NAME – IS AN ABSTRACT SYMBOL USED DURING SYNTAX ANALYSIS.  ATTRIBUTE VALUE – POINTS TO AN ENTRY IN THE SYMBOL TABLE FOR THIS TOKEN. POSITION = INITIAL + RATE * 60 <ID,1> < = > <ID,2> < +> <ID,3> < *> <60> Richa Sharma 9
  • 10. SYNTAX ANALYSIS/PARSING • RECOGNIZES “SENTENCES” IN THE PROGRAM USING THE SYNTAX OF THE LANGUAGE • CREATES TREE LIKE STRUCTURE FROM TOKENS (SYNTAX TREE) • NODE REPRESENTS OPERATION • CHILDREN REPRESENTS ARGUMENTS • REPRESENTS THE SYNTACTIC STRUCTURE OF THE PROGRAM, HIDING A FEW DETAILS THAT ARE IRRELEVENT TO LATER PHASES OF COMPILATION. Richa Sharma 10
  • 11. SEMANTIC ANALYSIS • INFERS INFORMATION ABOUT THE PROGRAM USING THE SEMANTICS OF THE LANGUAGE • USES SYNTAX TREE AND INFO. IN SYMBOL TABLE TO CHECK FOR SEMANTIC CONSISTENCY. • GATHERS TYPE INFO. AND SAVES IT IN EITHER THE SYNTAX TREE OR SYMBOL TABLE FOR USE IN ICG • TYPE CHECKING – CHECKS THAT EACH OPERATOR HAS MATCHING OPERANDS. E.G ARRAY INDEX SHOULD BE INTEGER. • TYPE CONVERSIONS CALLED COERCIONS • BINARY ARITHMETIC OPERATOR (INT OR FLOAT) • IF 6+7.5, THEN CONVERT 6 TO 6.5 Richa Sharma 11
  • 12. INTERMEDIATE CODE GENERATION • GENERATES “ABSTRACT” CODE BASED ON THE SYNTACTIC STRUCTURE OF THE PROGRAM AND THE SEMANTIC INFORMATION FROM PHASE 2.  SYNTAX TREE ARE ALSO IR  COMPILER MAY PRODUCE EXPLICIT IR  IR HAS TWO PROPERTIES:  EASY TO PRODUCE  EASY TO TRANSLATE INTO TARGET MACHINE  E.G IR – THREE ADDRESS CODE  T1 = INTTOFLOAT(60)  T2 = ID3 * T1  T3 = ID2 + T3  ID1 = T3 Richa Sharma 12
  • 13. CODE OPTIMIZATION • REFINES THE GENERATED CODE USING A SERIES OF OPTIMIZING TRANSFORMATIONS. • Eg: REMOVING DEAD CODE . REDUCING ITERATIONS AND LOOPS ETC.. • APPLY A SERIES OF TRANSFORMATIONS TO IMPROVE THE TIME AND SPACE EFFICIENCY OF THE GENERATED CODE. • PEEPHOLE OPTIMIZATIONS: GENERATE NEW INSTRUCTIONS BY COMBINING/EXPANDING ON A SMALL NUMBER OF CONSECUTIVE INSTRUCTIONS. • GLOBAL OPTIMIZATIONS: REORDER, REMOVE OR ADD INSTRUCTIONS TO CHANGE THE STRUCTURE OF GENERATED CODE. Richa Sharma 13
  • 14. CODE GENEARTION • MAP INSTRUCTIONS IN THE INTERMEDIATE CODE TO SPECIFIC MACHINE INSTRUCTIONS. • SUPPORTS STANDARD OBJECT FILE FORMATS. • GENERATES SUFFICIENT INFORMATION TO ENABLE SYMBOLIC DEBUGGING.  IR -> CG -> TARGET LANGUAGE (E.G MACHINE CODE)  REGISTERS AND MEMORY LOCATIONS ARE SELECTED FOR EACH VARIABLE USED BY THE PROGRAM.  LDF R2, ID3  MULF R2, R2, #60.0  LDF R1, ID2  ADDF R1, R1, R2  STF ID1, R1  R1,R2 – REGISTERS F – FLOATING POINT NUMBERS # - IMMEDIATE CONST. Richa Sharma 14
  • 15. SYMBOL TABLE • SYMBOL TABLE – DATA STRUCTURE WITH A RECORD FOR EACH IDENTIFIER AND ITS ATTRIBUTES • ALL THE PHASES ARE CONNECTED TO THE SYMBOL TABLE. • ATTRIBUTES INCLUDE STORAGE ALLOCATION, TYPE, SCOPE, ETC • ALL THE COMPILER PHASES INSERT AND MODIFY THE SYMBOL TABLE Richa Sharma 15
  • 16. Richa Sharma 16 OVERALL WORKING OF COMPILER PHASES
  • 17. COMPILER CONSTRUCTION TOOLS • DEVELOPER MAY USE MODERN SOFTWARE DEVELOPMENT ENVIRONMENT CONTAINING TOOLS Ex: LANGUAGE EDITORS, VERSION MANAGERS, TEC. • SOME SPECIAL TOOLS CAN ALSO BE USED. THESE TOOLS ARE THOSE WHICH HIDE THE DETAILS OF GENERATION ALGORITHM AND PRODUCE COMPONENTS THAT CAN BE EASILY INTEGRATED TO REMAINDER OF THE COMPILER. • PARSER GENERATOR: TAKES GRAMMAR DESCRIPTION AND PRODUCES SYNTAX ANALYSER. • SCANNER GENERATOR: TAKES REGULAR EXPRESSION AND PRODUCES LEXICAL ANALYSER. • AUTOMATIC CODE- GENERATOR : TAKES INTERMEDIATE AND CONVERT TO MACHINE LANGUAGE) • DATA FLOW ANALYSIS ENGINES (FOR OPTIMIZATION) • COMPILER CONSTRUCTION TOOLKIT. Richa Sharma 17
  • 18. APPLICATION OF COMPILER TECHNOLOGY • IMPLEMENTATION OF HIGH LEVEL PROGRAMMING LANGUAGES - CONCEPTS OF OOPS • OPTIMIZATION FOR COMPUTER ARCHITECTURE - PARALLELISM - MEMORY HIERARCHIES OF MACHINES(REG, ARRAYS ETC) • DESIGN OF NEW COMPUTER ARCHITECURES - RISC - CISC - SIMD ETC • PROGRAM TRANSLATIONS • SOFTWARE PRODUCTIVITY TOOLS Richa Sharma 18