1 / 23

Lecture 5: Syntax Analysis

The University of North Carolina at Chapel Hill. Lecture 5: Syntax Analysis. COMP 144 Programming Language Concepts Spring 2002. Felix Hernandez-Campos Jan 18. Source Code. Interpre- tation. Target Code. Review: Compilation/Interpretation. Compiler or Interpreter

missy
Download Presentation

Lecture 5: Syntax Analysis

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. The University of North Carolina at Chapel Hill Lecture 5: Syntax Analysis COMP 144 Programming Language Concepts Spring 2002 Felix Hernandez-Campos Jan 18 COMP 144 Programming Language Concepts Felix Hernandez-Campos

  2. Source Code Interpre- tation Target Code Review: Compilation/Interpretation Compiler or Interpreter Translation Execution COMP 144 Programming Language Concepts Felix Hernandez-Campos

  3. Review: Syntax Analysis • Specifying the form of a programming language • Tokens • Regular Expression • Syntax • Context-Free Grammars Source Code Compiler or Interpreter Translation Execution Target Code COMP 144 Programming Language Concepts Felix Hernandez-Campos

  4. Phases of Compilation COMP 144 Programming Language Concepts Felix Hernandez-Campos

  5. Syntax Analysis • Syntax: • Webster’s definition: 1 a : the way in which linguistic elements (as words) are put together to form constituents (as phrases or clauses) • The syntax of a programming language • Describes its form • Organization of tokens(elements) • Context Free Grammars (CFGs) • Must be recognizable by compilers and interpreters • Parsing • LL and LR parsers COMP 144 Programming Language Concepts Felix Hernandez-Campos

  6. Context Free Grammars • CFGs • Add recursion to regular expressions • Nested constructions • Notation expression identifier | number| -expression | (expression) | expressionoperatorexpression operator  + | -| *| / • Terminal symbols • Non-terminal symbols • Production rule (i.e. substitution rule) terminal symbol  terminal and non-terminal symbols COMP 144 Programming Language Concepts Felix Hernandez-Campos

  7. Parsers • Scanners • Task: recognize language tokens • Implementation: Deterministic Finite Automaton • Transition based on the next character • Parsers • Task: recognize language syntax (organization of tokens) • Implementation: • Top-down parsing • Bottom-up parsing COMP 144 Programming Language Concepts Felix Hernandez-Campos

  8. Parse Trees • A parse is graphical representation of a derivation • Example COMP 144 Programming Language Concepts Felix Hernandez-Campos

  9. Parsing example • Example: comma-separated list of identifier • CFG id_list  idid_list_tail id_list_tail  ,id_list_tail id_list_tail  ; • Parsing A, B, C; COMP 144 Programming Language Concepts Felix Hernandez-Campos

  10. Left-to-right, Left-most derivation LL(1) parsing Top-down derivation of A, B, C; CFG COMP 144 Programming Language Concepts Felix Hernandez-Campos

  11. Top-down derivation of A, B, C; CFG COMP 144 Programming Language Concepts Felix Hernandez-Campos

  12. Bottom-up parsing of A, B, C; CFG Left-to-right, Right-most derivation LR(1) parsing COMP 144 Programming Language Concepts Felix Hernandez-Campos

  13. Bottom-up parsing of A, B, C; CFG COMP 144 Programming Language Concepts Felix Hernandez-Campos

  14. Bottom-up parsing of A, B, C; CFG COMP 144 Programming Language Concepts Felix Hernandez-Campos

  15. Parsing • Parsing an arbitrary Context Free Grammar • O(n3) • Too slow for large programs • Linear-time parsing • LL parsers • Recognize LL grammar • Use a top-down strategy • LR parsers • Recognize LR grammar • Use a bottom-up strategy COMP 144 Programming Language Concepts Felix Hernandez-Campos

  16. Hierarchy of Linear Parsers • Basic containment relationship • All CFGs can be recognized by LR parser • Only a subset of all the CFGs can be recognized by LL parsers CFGsLR parsing LL parsing COMP 144 Programming Language Concepts Felix Hernandez-Campos

  17. Recursive Descent Parser Example • LL(1) grammar COMP 144 Programming Language Concepts Felix Hernandez-Campos

  18. Recursive Descent Parser Example • Outline of recursive parser • This parser only verifies syntax • match is the scanner COMP 144 Programming Language Concepts Felix Hernandez-Campos

  19. Recursive Descent Parser Example COMP 144 Programming Language Concepts Felix Hernandez-Campos

  20. Recursive Descent Parser Example COMP 144 Programming Language Concepts Felix Hernandez-Campos

  21. Recursive Descent Parser Example COMP 144 Programming Language Concepts Felix Hernandez-Campos

  22. Semantic Analysis • Specifying the meaning of a programming language • Attribute Grammars Source Code Compiler or Interpreter Translation Execution Target Code COMP 144 Programming Language Concepts Felix Hernandez-Campos

  23. Reading Assignment • Scott’s Chapter 2 • Section 2.2.2 • Section 2.2.3 COMP 144 Programming Language Concepts Felix Hernandez-Campos

More Related