1 COMP 144 Programming Language Concepts Felix Hernandez-Campos Lecture 5: Syntax Analysis COMP 144 Programming Language Concepts Spring 2002 Felix Hernandez-Campos Jan 18 The University of North Carolina at Chapel Hill
2 COMP 144 Programming Language Concepts Felix Hernandez-Campos Review: Compilation/Interpretation Compiler or Interpreter Translation Execution Source Code Target Code Interpre-tation
3 COMP 144 Programming Language Concepts Felix Hernandez-Campos Review: Syntax Analysis Compiler or Interpreter Translation Execution Source Code Specifying the formSpecifying the form of a programming language –Tokens »Regular Expression –Syntax »Context-Free Grammars Target Code
4 COMP 144 Programming Language Concepts Felix Hernandez-Campos Phases of Compilation
5 COMP 144 Programming Language Concepts Felix Hernandez-Campos Syntax Analysis Syntax: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 languageThe 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
6 COMP 144 Programming Language Concepts Felix Hernandez-Campos Context Free Grammars CFGsCFGs –Add recursion to regular expressions »Nested constructions –Notation expression identifier | number | - expression | ( expression ) | ( expression ) | expression operator expression | expression operator expression operator + | - | * | / »Terminal symbols »Non-terminal symbols »Production rule (i.e. substitution rule) terminal symbol terminal and non-terminal symbols
7 COMP 144 Programming Language Concepts Felix Hernandez-Campos Parsers ScannersScanners –Task: recognize language tokens –Implementation: Deterministic Finite Automaton »Transition based on the next character ParsersParsers –Task: recognize language syntax (organization of tokens) –Implementation: »Top-down parsing »Bottom-up parsing
8 COMP 144 Programming Language Concepts Felix Hernandez-Campos Parse Trees A parse is graphical representation of a derivationA parse is graphical representation of a derivation ExampleExample
9 COMP 144 Programming Language Concepts Felix Hernandez-Campos Parsing example Example: comma-separated list of identifierExample: comma-separated list of identifier –CFG id_list id id_list_tail id_list_tail , id_list_tail id_list_tail ; –Parsing A, B, C;
10 COMP 144 Programming Language Concepts Felix Hernandez-Campos Top-down derivation of A, B, C; CFG Left-to-right, Left-most derivation LL(1) parsing
11 COMP 144 Programming Language Concepts Felix Hernandez-Campos Top-down derivation of A, B, C; CFG
12 COMP 144 Programming Language Concepts Felix Hernandez-Campos Bottom-up parsing of A, B, C; CFG Left-to-right, Right-most derivation LR(1) parsing
13 COMP 144 Programming Language Concepts Felix Hernandez-Campos Bottom-up parsing of A, B, C; CFG
14 COMP 144 Programming Language Concepts Felix Hernandez-Campos Bottom-up parsing of A, B, C; CFG
15 COMP 144 Programming Language Concepts Felix Hernandez-Campos Parsing Parsing an arbitrary Context Free GrammarParsing an arbitrary Context Free Grammar –O(n 3 ) –Too slow for large programs Linear-time parsingLinear-time parsing –LL parsers »Recognize LL grammar »Use a top-down strategy –LR parsers »Recognize LR grammar »Use a bottom-up strategy
16 COMP 144 Programming Language Concepts Felix Hernandez-Campos Hierarchy of Linear Parsers Basic containment relationshipBasic containment relationship –All CFGs can be recognized by LR parser –Only a subset of all the CFGs can be recognized by LL parsers LL parsing CFGs LR parsing
17 COMP 144 Programming Language Concepts Felix Hernandez-Campos Recursive Descent Parser Example LL(1) grammarLL(1) grammar
18 COMP 144 Programming Language Concepts Felix Hernandez-Campos Recursive Descent Parser Example Outline ofOutline of recursive parser –This parser only verifies syntax –match is the scanner
19 COMP 144 Programming Language Concepts Felix Hernandez-Campos Recursive Descent Parser Example
20 COMP 144 Programming Language Concepts Felix Hernandez-Campos Recursive Descent Parser Example
21 COMP 144 Programming Language Concepts Felix Hernandez-Campos Recursive Descent Parser Example
22 COMP 144 Programming Language Concepts Felix Hernandez-Campos Semantic Analysis Compiler or Interpreter Translation Execution Source Code Specifying the meaningSpecifying the meaning of a programming language –Attribute Grammars Target Code
23 COMP 144 Programming Language Concepts Felix Hernandez-Campos Reading Assignment Scott’s Chapter 2Scott’s Chapter 2 –Section –Section 2.2.3