COMPILER CONSTRUCTION Principles and practice Kenneth C. louden San Jose state university
COMPILER CONSTRUCTION Principles and Practice Kenneth C. Louden San Jose State University
Content INTRODUCTION 2. SCANNING 3. CONTEXT-FREE GRMMARS AND PARSING 4. TOP-DOWN PARSING 5. BOTTOM-UP PARSING 6. SEMANTIC ANALYSIS 7. RUNTIME ENVIRONMENT 8. CODE GENERATION
Content 1. INTRODUCTION 2. SCANNING 3. CONTEXT-FREE GRMMARS AND PARSING 4. TOP-DOWN PARSING 5. BOTTOM-UP PARSING 6. SEMANTIC ANALYSIS 7. RUNTIME ENVIRONMENT 8. CODE GENERATION
1 INTRODUCTION
1. INTRODUCTION
What is a compiler A computer program translates one language to another Source→ Compil Target er Program Program a compiler is a complex program From 10.000 to 1.000.000 lines of codes Compilers are used in many forms of computing Command interpreters, interface programs
What is a compiler? • A computer program translates one language to another • A compiler is a complex program • From 10,000 to 1,000,000 lines of codes • Compilers are used in many forms of computing • Command interpreters, interface programs Compiler Source Program Target Program
What is the purpose of this text This text is to provide basic knowledge Theoretical techniques, such as automata theory This text is to give necessary tools and practical experience A series of simple examples TINY C-Minus
What is the purpose of this text • This text is to provide basic knowledge – Theoretical techniques, such as automata theory • This text is to give necessary tools and practical experience – A series of simple examples – TINY, C-Minus
Main Topics 1. 1 Why Compilers? A Brief History Openl 1.2 Programs related to Compilers open 1.3 The Translation Process Openl 1. 4 Major Data Structures in a Compiler Open 1.5 Other Issues in Compiler Structure Open 1.6 Bootstrapping and porting open 1. 7 The TINY Sample language and compiler Open 1. 8 C-Minus: A Language for a Compiler project Open
Main Topics 1.1 Why Compilers? A Brief History [Open] 1.2 Programs Related to Compilers [Open] 1.3 The Translation Process [Open] 1.4 Major Data Structures in a Compiler [Open] 1.5 Other Issues in Compiler Structure [Open] 1.6 Bootstrapping and Porting [Open] 1.7 The TINY Sample Language and Compiler [Open] 1.8 C-Minus: A Language for a Compiler Project [Open]
1. 1 Why? A Brief history
1.1 Why? A Brief History
Why Compiler Writing machine language-numeric codes is time consuming and tedious C70600000002 MoV 2 X=2 The assembly language has a number of defects not easy to write Difficult to read and understand
Why Compiler • Writing machine language-numeric codes is time consuming and tedious C7 06 0000 0002 Mov x, 2 X=2 • The assembly language has a number of defects – Not easy to write – Difficult to read and understand
Brief history of compiler The first compiler was developed between 1954 and 1957 The FORTRaN language and its compiler by a team at IBM led by John Backus The structure of natural language was studied at about the same time by noam Chomsky
Brief History of Compiler • The first compiler was developed between 1954 and 1957 – The FORTRAN language and its compiler by a team at IBM led by John Backus – The structure of natural language was studied at about the same time by Noam Chomsky
Brief history of Compiler The related theories and algorithms in the 1960s and 1970s The classification of language: Chomsky hierarchy he parsing problem was pursued Context-free language. parsing algorithms The symbolic methods for expressing the structure of the words of a programming language Finite automata, Regular expressions Methods have been developed for generating efficient object code Optimization techniques or code, improvement techniques
Brief History of Compiler • The related theories and algorithms in the 1960s and 1970s – The classification of language: Chomsky hierarchy – The parsing problem was pursued: • Context-free language, parsing algorithms – The symbolic methods for expressing the structure of the words of a programming language: • Finite automata, Regular expressions – Methods have been developed for generating efficient object code: • Optimization techniques or code, improvement techniques