Presentation is loading. Please wait.

Presentation is loading. Please wait.

CH1.1 CSE244 Chapter 1: Introduction to Compiling Prof. Steven A. Demurjian, Sr. Computer Science & Engineering Department The University of Connecticut.

Similar presentations


Presentation on theme: "CH1.1 CSE244 Chapter 1: Introduction to Compiling Prof. Steven A. Demurjian, Sr. Computer Science & Engineering Department The University of Connecticut."— Presentation transcript:

1 CH1.1 CSE244 Chapter 1: Introduction to Compiling Prof. Steven A. Demurjian, Sr. Computer Science & Engineering Department The University of Connecticut 191 Auditorium Road, Box U-155 Storrs, CT 06269-3155 steve@engr.uconn.edu http://www.engr.uconn.edu/~steve (860) 486 - 4818 Dr. Robert LaBarre United Technologies Research Center 411 Silver Lane E. Hartford, CT 06018 LaBarrRE@utrc.utc.com labarre_math@hotmail.com

2 CH1.2 CSE244 Introduction to Compilers  As a Discipline, Involves Multiple CSE Areas  Programming Languages and Algorithms  Software Engineering & Theory / Foundations  Computer Architecture & Operating Systems  But, Has Surprisingly Simplistic Intent: Compiler Source program Target Program Error messages Diverse & Varied

3 CH1.3 CSE244 Classifications of Compilers  Compilers Viewed from Many Perspectives  However, All utilize same basic tasks to accomplish their actions Single Pass Multiple Pass Load & Go Construction Debugging Optimizing Functional

4 CH1.4 CSE244 Classifications of Compilers  Also, Broadly Categorized as:  We Will Discuss Each Category in This Class Analysis: Synthesis: Decompose Source into an intermediate representation Target program generation from representation

5 CH1.5 CSE244 Important Notes  In Today’s Technology, Analysis Is Often Performed by Software Tools - This Wasn’t the Case in Early CSE Days  Structure / Syntax directed editors: Force “syntactically” correct code to be entered  Pretty Printers: Standardized version for program structure (i.e., blank space, indenting, etc.)  Static Checkers: A “quick” compilation to detect rudimentary errors  Interpreters: “real” time execution of code a “line-at-a-time”

6 CH1.6 CSE244 Important Notes  Compilation Is Not Limited to Programming Language Applications  Text Formatters  LATEX & TROFF Are Languages Whose Commands Format Text  Silicon Compilers  Textual / Graphical: Take Input and Generate Circuit Design  Database Query Processors  Database Query Languages Are Also a Programming Language  Input Is“compiled” Into a Set of Operations for Accessing the Database

7 CH1.7 CSE244 The Many Phases of a Compiler Source Program Lexical Analyzer 1 Syntax Analyzer 2 Semantic Analyzer 3 Intermediate Code Generator 4 Code Optimizer 5 Code Generator 6 Target Program Symbol-table Manager Error Handler 1, 2, 3 : Analysis - Our Focus 4, 5, 6 : Synthesis

8 CH1.8 CSE244  Three Phases:  Linear / Lexical Analysis:  L-to-r Scan to Identify Tokens  Hierarchical Analysis:  Grouping of Tokens Into Meaningful Collection  Semantic Analysis:  Checking to Insure Correctness of Components The Analysis Task For Compilation

9 CH1.9 CSE244 Phase 1. Lexical Analysis Easiest Analysis - Identify tokens which are building blocks For Example: All are tokens Blanks, Line breaks, etc. are scanned out Position := initial + rate * 60 ; _______ __ _____ _ ___ _ __ _

10 CH1.10 CSE244 Phase 2. Hierarchical Analysis aka Parsing or Syntax Analysis For previous example, we would have Parse Tree: identifier expression identifier expression number expression assignment statement position := + * 60 initial rate Nodes of tree are constructed using a grammar for the language

11 CH1.11 CSE244 What is a Grammar?  Grammar is a Set of Rules Which Govern the Interdependencies & Structure Among the Tokens statementis anassignment statement, or while statement, or if statement, or... assignment statement expression is an identifier := expression ; (expression), or expression + expression, or expression * expression, or number, or identifier, or...

12 CH1.12 CSE244 Why Have We Divided Analysis in This Manner?  Lexical Analysis - Scans Input & Its Linear Actions Are Not Recursive  Identify Only Individual “words” that are the the Tokens of the Language  Recursion Is Required to Identify Structure of an Expression, As Indicated in Parse Tree  Verify that the “words” are Correctly Assembled into “sentences”  What is Third Phase?  Determine Whether the Sentences have One and Only One Unambiguous Interpretation  “John Took Picture of Mary Out on the Patio”

13 CH1.13 CSE244 Phase 3. Semantic Analysis  Find More Complicated Semantic Errors and Support Code Generation  Parse Tree Is Augmented With Semantic Actions position initial rate := + * 60 Compressed Tree position initial rate := + * inttoreal 60 Conversion Action

14 CH1.14 CSE244 Phase 3. Semantic Analysis  Most Important Activity in This Phase:  Type Checking - Legality of Operands  Many Different Situations: Real := int + char ; A[int] := A[real] + int ; while char <> int do …. Etc.

15 CH1.15 CSE244 Analysis in Text Formatting Simple Commands : LATEX \begin{single} \end{single} \noindent \section{Introduction} $A_i$ $A_{i_j}$ Embedded in a stream of text, i.e., a FILE \ and $ serve as signals to LATEX begin single noindent section Language Commands What are tokens? What is hierarchical structure? What kind of semantic analysis is required?

16 CH1.16 CSE244 Supporting Phases/ Activities for Analysis  Symbol Table Creation / Maintenance  Contains Info on Each “Meaningful” Token, Typically Identifiers  Data Structure Created / Initialized During Lexical Analysis  Utilized / Updated During Later Analysis & Synthesis  Error Handling  Detection of Different Errors Which Correspond to All Phases  What Kinds of Errors Are Found During the Analysis Phase?  What Happens When an Error Is Found?

17 CH1.17 CSE244 The Many Phases of a Compiler Source Program Lexical Analyzer 1 Syntax Analyzer 2 Semantic Analyzer 3 Intermediate Code Generator 4 Code Optimizer 5 Code Generator 6 Target Program Symbol-table Manager Error Handler 1, 2, 3 : Analysis - Our Focus 4, 5, 6 : Synthesis

18 CH1.18 CSE244 The Synthesis Task For Compilation  Intermediate Code Generation  Abstract Machine Version of Code - Independent of Architecture  Easy to Produce and Do Final, Machine Dependent Code Generation  Code Optimization  Find More Efficient Ways to Execute Code  Replace Code With More Optimal Statements  2-approaches: High-level Language & “Peephole” Optimization  Final Code Generation  Generate Relocatable Machine Dependent Code

19 CH1.19 CSE244 Reviewing the Entire Process ErrorsErrors position := initial + rate * 60 lexical analyzer syntax analyzer semantic analyzer intermediate code generator id1 := id2 + id3 * 60 := id1 id2l id3 + * 60 := id1 id2l id3 + * inttoreal 60 Symbol Table position.... initial …. rate….

20 CH1.20 CSE244 Reviewing the Entire Process ErrorsErrors intermediate code generator code optimizer final code generator temp1 := inttoreal(60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3 temp1 := id3 * 60.0 id1 := id2 + temp1 mov f id3, r2 mulf #60.0, r2 movf id2, r1 addf r2, r2 movf r1, id1 position.... initial …. rate…. Symbol Table

21 CH1.21 CSE244 Compiler Cousins: Preprocessors Compiler Cousins: Preprocessors Provide Input to Compilers 1. Macro Processing #define in C: does text substitution before compiling #define X 3 #define Y A*B+C #define Z getchar()

22 CH1.22 CSE244 2. File Inclusion #include in C - bring in another file before compiling defs.h ////// main.c #include “defs.h” …---…---…--- ////// …---…---…---

23 CH1.23 CSE244 3. Rational Preprocessors  Augment “Old” Languages With Modern Constructs  Add Macros for If - Then, While, Etc.  #Define Can Make C Code More Pascal-like #define begin { #define end } #define then

24 CH1.24 CSE244 4. Language Extensions for a Database System EQUEL - Database query language embedded in C ## Retrieve (DN=Department.Dnum) where ## Department.Dname = ‘Research’ is Preprocessed into: ingres_system(“Retr…..Research’”,____,____); a procedure call in a programming language.

25 CH1.25 CSE244 The Grouping of Phases Front End : Analysis + Intermediate Code Generation Back End : Code Generation + Optimization vs. Number of Passes: Single - Preferred Multiple - Easier, but less efficient Tradeoffs ……..

26 CH1.26 CSE244 Compiler Construction Tools Parser Generators : Produce Syntax Analyzers Scanner Generators : Produce Lexical Analyzers Syntax-directed Translation Engines : Generate Intermediate Code Automatic Code Generators : Generate Actual Code Data-Flow Engines : Support Optimization


Download ppt "CH1.1 CSE244 Chapter 1: Introduction to Compiling Prof. Steven A. Demurjian, Sr. Computer Science & Engineering Department The University of Connecticut."

Similar presentations


Ads by Google