1 / 29

Chapter 10: Compilers and Language Translation

Chapter 10: Compilers and Language Translation. Invitation to Computer Science, C++ Version, Third Edition. Objectives. In this chapter, you will learn about: The compilation process Phase I: Lexical analysis Phase II: Parsing Phase III: Semantics and code generation

rio
Download Presentation

Chapter 10: Compilers and Language Translation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 10: Compilers and Language Translation Invitation to Computer Science, C++ Version, Third Edition

  2. Objectives In this chapter, you will learn about: • The compilation process • Phase I: Lexical analysis • Phase II: Parsing • Phase III: Semantics and code generation • Phase IV: Code optimization 語彙的 從語法上分析 語義學 Invitation to Computer Science, C++ Version, Third Edition

  3. Introduction • High-level language instructions must be translated into machine language prior to execution • Compiler • A piece of system software that translates high-level languages into machine language Invitation to Computer Science, C++ Version, Third Edition

  4. Introduction (continued) • Goals of a compiler when performing a translation • Correctness • Producing a reasonably efficient and concise machine language code Invitation to Computer Science, C++ Version, Third Edition

  5. Figure 10.1 General Structure of a Compiler Invitation to Computer Science, C++ Version, Third Edition

  6. The Compilation Process • Phase I: Lexical analysis • Compiler examines the individual characters in the source program and groups them into syntactical units called tokens • Phase II: Parsing • The sequence of tokens formed by the scanner is checked to see whether it is syntactically correct 按照句法的 標記 Invitation to Computer Science, C++ Version, Third Edition

  7. The Compilation Process (continued) • Phase III: Semantic analysis and code generation • The compiler analyzes the meaning of the high-level language statement and generates the machine language instructions to carry out these actions • Phase IV: Code optimization • The compiler takes the generated code and sees whether it can be made more efficient Invitation to Computer Science, C++ Version, Third Edition

  8. Figure 10.2 Overall Execution Sequence on a High-level Language Program Invitation to Computer Science, C++ Version, Third Edition

  9. The Compilation Process (continued) • Final step • Object program is written to an object file • Source program • Original high-level language program • Object program • Machine language translation of the source program Invitation to Computer Science, C++ Version, Third Edition

  10. Phase I: Lexical Analysis • Lexical analyzer • The program that performs lexical analysis • More commonly called a scanner • Job of lexical analyzer • Group input characters into tokens • Tokens: syntactical units that are treated as single, indivisible entities for the purposes of translation • Classify tokens according to their type Invitation to Computer Science, C++ Version, Third Edition

  11. Figure 10.3 Typical Token Classifications Invitation to Computer Science, C++ Version, Third Edition

  12. Phase I: Lexical Analysis (continued) • Input to a scanner • A high-level language statement from the source program • Scanner’s output • A list of all the tokens in that statement • The classification number of each token found Invitation to Computer Science, C++ Version, Third Edition

  13. Phase II: Parsing Introduction • Parsing phase • A compiler determines whether the tokens recognized by the scanner are a syntactically legal statement • Performed by a parser Invitation to Computer Science, C++ Version, Third Edition

  14. Phase II: Parsing Introduction (continued) • Output of a parser • A parse tree, if such a tree exists • An error message, if a parse tree cannot be constructed • Successful construction of a parse tree is proof that the statement is correctly formed (See the next slide) Invitation to Computer Science, C++ Version, Third Edition

  15. Example • High-level language statement: a = b + c Invitation to Computer Science, C++ Version, Third Edition

  16. Grammars, Languages, and BNF • Syntax • The grammatical structure of the language • The parser must be given the syntax of the language • BNF (Backus-Naur Form) • Most widely used notation for representing the syntax of a programming language 語法;句法 Invitation to Computer Science, C++ Version, Third Edition

  17. Grammars, Languages, and BNF (continued) • In BNF • The syntax of a language is specified as a set of rules (also called productions) • A grammar • The entire collection of rules for a language • Structure of an individual BNF rule left-hand side ::= “definition” Invitation to Computer Science, C++ Version, Third Edition

  18. Grammars, Languages, and BNF (continued) • BNF rules use two types of objects on the right-hand side of a production • Terminals • The actual tokens of the language • Never appear on the left-hand side of a BNF rule • Nonterminals • Intermediate grammatical categories used to help explain and organize the language • Must appear on the left-hand side of one or more rules Invitation to Computer Science, C++ Version, Third Edition

  19. Grammars, Languages, and BNF (continued) • Goal symbol • The highest-level nonterminal • The nonterminal object that the parser is trying to produce as it builds the parse tree • All nonterminals are written inside angle brackets Invitation to Computer Science, C++ Version, Third Edition

  20. Parsing Concepts and Techniques • Fundamental rule of parsing • By repeated applications of the rules of the grammar • If a parser can convert the sequence of input tokens into the goal symbol, then that sequence of tokens is a syntactically valid statement of the language • If the parser cannot convert the input tokens into the goal symbol, then this is not a syntactically valid statement of the language Invitation to Computer Science, C++ Version, Third Edition

  21. Parsing Concepts and Techniques (continued) • One of the biggest problems in building a compiler is designing a grammar that: • Includes every valid statement that we want to be in the language • Excludes every invalid statement that we do not want to be in the language Invitation to Computer Science, C++ Version, Third Edition

  22. Parsing Concepts and Techniques (continued) • Another problem in constructing a compiler: designing a grammar that is not ambiguous • An ambiguous grammar allows the construction of two or more distinct parse trees for the same statement Invitation to Computer Science, C++ Version, Third Edition

  23. Phase III: Semantics and Code Generation • Semantic analysis • The compiler makes first pass over parse tree to determine whether all branches of the tree are semantically valid • If they are valid, the compiler can generate machine language instructions • If not, there is a semantic error; machine language instructions are not generated Invitation to Computer Science, C++ Version, Third Edition

  24. Phase III: Semantics and Code Generation (continued) • Code generation • Compiler makes the second pass over the parse tree to produce the translated code Invitation to Computer Science, C++ Version, Third Edition

  25. Phase IV: Code Optimization • Two types of optimization • Local • Global • Local optimization • The compiler looks at a very small block of instructions and tries to determine how it can improve the efficiency of this local code block • Relatively easy; included as part of most compilers Invitation to Computer Science, C++ Version, Third Edition

  26. Phase IV: Code Optimization (continued) • Examples of possible local optimizations • Constant evaluation • Strength reduction • Eliminating unnecessary operations Invitation to Computer Science, C++ Version, Third Edition

  27. Phase IV: Code Optimization (continued) • Global optimization • The compiler looks at large segments of the program to decide how to improve performance • Much more difficult; usually omitted from all but the most sophisticated and expensive production-level “optimizing compilers” • Optimization cannot make an inefficient algorithm efficient Invitation to Computer Science, C++ Version, Third Edition

  28. Summary • A compiler is a piece of system software that translates high-level languages into machine language • Goals of a compiler: correctness, and producing efficient and concise code • Source program: high-level language program Invitation to Computer Science, C++ Version, Third Edition

  29. Summary • Object program: the machine language translation of the source program • Phases of the compilation process • Phase I: Lexical analysis • Phase II: Parsing • Phase III: Semantic analysis and code generation • Phase IV: Code optimization Invitation to Computer Science, C++ Version, Third Edition

More Related