CS 212 LECTURE 07 PROGRAMMING LANGUAGES PREDICTIVE PARSING
- Slides: 52
CS 212 LECTURE 07 PROGRAMMING LANGUAGES
PREDICTIVE PARSING 2
PREDICTIVE PARSING AND LEFT FACTORING Recall the grammar • E → T + E | T • T → int | int * T | ( E( Impossible to predict because • For T two productions start with int • For E it is not clear how to predict • A grammar must be left-factored before use predictive parsing 3
LEFT FACTORING 4
LEFT FACTORING 5
LEFT FACTORING (AN EXAMPLE( • Consider the following fragment of the expression grammar • After left factoring, it becomes 6
7
LEFT FACTORING (AN EXAMPLE( 8
TRY THIS • Left factoring this gramma E→T+E|T T → int | int * T | ( E( 9
LL(1) CONFLICT There are two main types of LL(1) conicts: 10
INDIRECT LEFT RECURSION & CONFLICT PROBLEM We have an indirect left-recursion around non-terminals C and D, First-First conflict between rules 1 & 2 and a First-Follow for non-terminal B (which is Nullable). 11
INDIRECT LEFT RECURSION & CONFLICT PROBLEM We can solve B's First-Follow conflict by simply making B non-Nullable. To do this, we first remove rule 4 and then for every rule that derives B, we clone the rule, but omit the B in the derivation. So that, A aa. C | aad | a. C | ad Now , Do left factoring 12
INDIRECT LEFT RECURSION & CONFLICT PROBLEM So that, A aa. C | aad | a. C | ad Now , Do left factoring A a. X X a. C |ad | C | d ( still need left factoring) So that , X a. Y | C | d Y C|d Now , we already solve the First on A and First Follow on B Next, we will solve the left recursion on C and D 13
INDIRECT LEFT RECURSION & CONFLICT PROBLEM Indirect Left Recursion Elimination (C and D) We first substitute any left-non-terminal with it's possible derivation. We Remove rule 5 since it has a non-terminal at the left-most position of its RHS. We replace it with: C Cc | b 14
INDIRECT LEFT RECURSION & CONFLICT PROBLEM Indirect Left Recursion Elimination (C and D) C Cc | b C b. C C c. C | 15
INDIRECT LEFT RECURSION & CONFLICT PROBLEM Finally we get the grammar : 16
CONSTRUCTION OF A LL(1) FROM A CFG GRAMMAR v. Eliminate left recursion vleft factorization v. Add an extra start production S → S$ to the grammar v. Calculate First for every production and Follow for every nonterminal 17
THE FIRST SET 18
EXAMPLE GRAMMAR Extra Start $ 19
THE FIRST CONSTRUCTION 20
THE FOLLOW SET 21
THE FOLLOW CONSTRUCTION 22
CONSTRUCTING THE LL(1) PARSING TABLE Building the complete table • Need a row for every NT & a column for every T • Need an algorithm to build the table 23
THE COMPLETE TABLE 24
Rule - Sentential Form Goal Input x – 2 * y$ 25
Rule - Sentential Form Goal Expr$ Input x – 2 * y$ 26
Rule - Sentential Form Goal Expr$ Term Expr $ Input x – 2 * y$ 27
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ Input x – 2 * y$ 28
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> Term Expr $ Input x – 2 * y$ x – 2 * y$ 29
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> Expr $ Input x – 2 * y$ x – 2 * y$ 30
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> - Term Expr $ Input x – 2 * y$ x – 2 * y$ x– 2 * y$ 31
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> - Term Expr $ <id, x> - Factor Term Expr $ Input x – 2 * y$ x – 2 * y$ x– 2 * y$ x – 2 * y$ 32
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> - Term Expr $ <id, x> - Factor Term Expr $ Input x – 2 * y$ x – 2 * y$ x– 2 * y$ x – 2 * y$ 33
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> - Term Expr $ <id, x> - Factor Term Expr $ <id, x> - <number, 2> Term Expr $ Input x – 2 * y$ x – 2 * y$ x– 2 * y$ x – 2 * y$ 34
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> - Term Expr $ <id, x> - Factor Term Expr $ <id, x> - <number, 2> Term Expr $ Input x – 2 * y$ x – 2 * y$ x– 2 * y$ x – 2 * y$ 35
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> - Term Expr $ <id, x> - Factor Term Expr $ <id, x> - <number, 2> * Term Expr $ Input x – 2 * y$ x – 2 * y$ x– 2 * y$ x – 2 * y$ 36
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> - Term Expr $ <id, x> - Factor Term Expr $ <id, x> - <number, 2> * Term Expr $ Input x – 2 * y$ x – 2 * y$ x– 2 * y$ x – 2 * y$ 37
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> - Term Expr $ <id, x> - Factor Term Expr $ <id, x> - <number, 2> * Factor Term Expr $ Input x – 2 * y$ x – 2 * y$ x– 2 * y$ x – 2 * y$ 38
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> - Term Expr $ <id, x> - Factor Term Expr $ <id, x> - <number, 2> * Factor Term Expr $ Input x – 2 * y$ x – 2 * y$ x– 2 * y$ x – 2 * y$ 39
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> - Term Expr $ <id, x> - Factor Term Expr $ <id, x> - <number, 2> * Factor Term Expr $ <id, x> - <number, 2> * <id, y> Term Expr $ Input x – 2 * y$ x – 2 * y$ x– 2 * y$ x – 2 * y$ x – 2 * y $ 40
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> - Term Expr $ <id, x> - Factor Term Expr $ <id, x> - <number, 2> * Factor Term Expr $ <id, x> - <number, 2> * <id, y> Term Expr $ Input x – 2 * y$ x – 2 * y$ x– 2 * y$ x – 2 * y$ x – 2 * y $ 41
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> - Term Expr $ <id, x> - Factor Term Expr $ <id, x> - <number, 2> * Factor Term Expr $ <id, x> - <number, 2> * <id, y> Expr $ Input x – 2 * y$ x – 2 * y$ x– 2 * y$ x – 2 * y$ x – 2 * y $ 42
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> - Term Expr $ <id, x> - Factor Term Expr $ <id, x> - <number, 2> * Factor Term Expr $ <id, x> - <number, 2> * <id, y> Expr $ Input x – 2 * y$ x – 2 * y$ x– 2 * y$ x – 2 * y$ x – 2 * y $ 43
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> - Term Expr $ <id, x> - Factor Term Expr $ <id, x> - <number, 2> * Factor Term Expr $ <id, x> - <number, 2> * <id, y> $ Input x – 2 * y$ x – 2 * y$ x– 2 * y$ x – 2 * y$ x – 2 * y $ 44
Rule - Sentential Form Goal Expr$ Term Expr $ Factor Term Expr $ <id, x> - Term Expr $ <id, x> - Factor Term Expr $ <id, x> - <number, 2> * Factor Term Expr $ <id, x> - <number, 2> * <id, y>$ Input x – 2 * y$ x – 2 * y$ x– 2 * y$ x – 2 * y$ x – 2 * y $ 45
EXAMPLE Given a grammar : S→S+T|T T → T*F | F F →a | (S) Remove left recursive S → TS S → +TS | T → FT T → *FT | There is no left factorization. Now add an extra start : G → S$ S → TS S → +TS | T → FT T → *FT | F →a | (S) 46
New grammar : 1 2 3 4 5 6 7 8 9 G→S S → TS S → +TS S → T → FT T → *FT T → F →a F →(S) Non-Terminal Symbol G, S, S , T, F a , +, *, (, ), $ 47
THE FIRST SET CONSTRUCTION Rule 1 2 3 4 First G a, ( { a, ( } S a, ( { a, ( } + { +, } a, ( { a, ( } * { *, } a, ( { a, ( } S T T F a a {a} + + { +} * * {*} ( ( {(} ) ) {)} 48
THE COMPLETE TABLE a + * ( G G→S S S → TS S → +TS S T T → FT F F →a $ S → T → FT T → T ) T → *FT F →(S) 50
TEST INPUT STRING ((a*a+a)+a+a) Rule 1 2 5 9 2 5 8 6 8 7 Sentential Form G S$ TS $ FT S $ (S) T S $ (TS ) T S $ (FT S ) T S $ ((S)T S ) T S $ ((TS )T S ) T S $ ((FT S ) T S $ ((a*FT S )T S ) T S $ ((a*a. S )T S ) T S $ Input ((a*a+a)+a+a)$ ( (a*a+a)+a+a)$ ( ( a*a+a)+a+a)$ ( (a *a+a)+a+a)$ ( (a*a +a)+a+a)$ 51
((a*a+a)+a+a) Rule Sentential Form 3 5 8 7 4 7, 4 ((a*a+TS )T S ) T S $ ((a*a+FT S )T S ) T S $ ((a*a+a)S ) T S $ ((a*a+a) +TS ) T S $ ((a*a+a) +FT S ) T S $ ((a*a+a) +a+TS ) T S $ ((a*a+a) +a+FT S ) T S $ ((a*a+a) +a+a) T S $ Input ( (a*a+ a)+a+a)$ ( (a*a+a) +a+a)$ ( (a*a+a) +a +a)$ ( (a*a+a) +a+a )$ ( (a*a+a) +a+a) $ $ 52
- Predictive parsing
- Predictive parsing
- Predictive parsing
- Error recovery in predictive parsing
- Recursive descent parsing
- Non recursive predictive parsing
- 01:640:244 lecture notes - lecture 15: plat, idah, farad
- Plc coding language
- Reasons for studying concepts of programming languages
- Programming languages
- Transmission programming languages
- Programming languages flowchart
- Tiny programming language
- Thread dalam java
- Real time programming language
- Advantages and disadvantages of system software
- Joey paquet
- Cornell programming languages
- Programming languages
- Adam doupe cse 340
- Cs 421 uiuc
- Xkcd programming language
- Brief history of programming languages
- Programming languages levels
- Mainstream programming languages
- Alternative programming languages
- Comparative programming languages
- Low level programming language
- Programming languages
- Real-time systems and programming languages
- Types of programming languages
- Multimedia programming languages
- Introduction to programming languages
- If programming languages were cars
- Cse 340 principles of programming languages
- Types of programming languages
- Middle level programming languages
- Programming languages
- Elsa gunter uiuc
- Taxonomy of programming languages
- Xenia programming languages
- Storage management in programming languages
- C programming lecture
- Et 212
- Phy 212
- 212
- Attiny 212
- Et 212
- Arquimedes frase celebre
- Disadvantages of fermentation
- Grapa 212
- 287 bc
- Pese 212