Professional Documents
Culture Documents
Lecture#17, Chapter 04 (Part III)
Lecture#17, Chapter 04 (Part III)
Syntax Analysis
Part I
Chapter 4
2
Non-LL(1) Examples
stack
Predictive parsing
X output
program (driver)
Y
Z Parsing table
$ M
9
Trace of Example 10
STACK INPUT OUTPUT E TE’
$E id + id * id$ E’ + TE’ |
$E’T id + id * id$ E TE’
T FT’
$E’T’F id + id * id$ T FT’ T’ * FT’ |
$E’T’id id + id * id$ F id F ( E ) | id
$E’T’ + id * id$
$E’ + id * id$ T’ Expend Input
$E’T+ + id * id$ E’ +TE’
$E’T id * id$
$E’T’F id * id$ T FT’
$E’T’id id * id$ F id
$E’T’ * id$
$E’T’F* * id$ T’ *FT’
$E’T’F id$
$E’T’id id$ F id
$E’T’ $
$E’ $ T’
$ $ E’
12
A
Parsing Table FIRST() FOLLOW(A)
E T ER ( id $)
ER + T ER + $)
E T ER
ER + T ER | ER
T F TR T F TR ( id +$)
TR * F TR | TR * F TR * +$)
F ( E ) | id TR
F(E) ( *+$)
F id id
id + * ( ) $
E E T ER E T ER
ER ER + T ER ER ER
T T F TR T F TR
TR TR TR * F TR TR TR
F F id F(E)
14
a + b $ Input
First(E,F,T) = { (, id } FOLLOW(E) = { $ ) }
FOLLOW(ER) = { $ ) }
First(ER) = { +, } FOLLOW(T) = { + $ ) }
First(TR) = { *, } FOLLOW(TR) = { + $ ) }
FOLLOW(F) = { * + $ ) }
id + * ( ) $
E E T ER E T ER synch synch
ER ER + T ER ER ER
T T F TR synch T F TR synch synch
TR TR TR * F TR TR TR
F F id synch synch F(E) synch synch
synch: pop A and skip input till synch token
or skip until FIRST(A) found
18
2. Phrase-Level Recovery
Change input stream by inserting missing *
For example: id id is changed into id * id
id + * ( ) $
E E T ER E T ER synch synch
ER ER + T ER ER ER
T T F TR synch T F TR synch synch
TR insert * TR TR * F TR TR TR
F F id synch synch F(E) synch synch
id + * ( ) $
E E T ER E T ER synch synch
ER ER + T ER ER ER
T T F TR synch T F TR synch synch
TR TR F T R TR TR * F TR TR TR
F F id synch synch F(E) synch synch
22
From Follow sets. Pop top of stack Skip input symbol: emp.
NT “synch” action
24
1 ETE’
2 E’+TE’ 9 – 17 : 18 – 25 :
3 E’ Sync Error
4 TFT’ Actions Handlers
5 T’*FT’
6 T’
7 F(E)
8 Fid