TA: Jade Cheng (TA)
ICS 313
HW 8 Problem set on p.198, nos. 4, 5
Due 2/17/19
[Exercise 4]
Show a trace of the recursive descent parse given in Section 4.4.1 for the
string a * (b + c).
Grammar: <expre> --> <term> { (+|-) <term> }
<term> --> <factor> { (*|\) <term> }
<factor> --> id | <expr>
Solution: call lex // return a
enter <expr>
enter <term>
enter <factor>
call lex // return *
exit <factor>
call lex // return (
enter <factor>
call lex // return b
enter <expr>
enter <term>
enter <factor>
call lex // return +
exit <factor>
exit <term>
call lex // return c
enter <term>
enter <factor>
call lex // return )
exit <factor>
exit <term>
exit <expr>
call lex // return EOF
exit <factor>
exit <term>
exit <expr>
[Exercise 5]
Given the following grammar and the right sentential form, draw a parse tree
and show the phrases and simple phrases, as well as the handle.
Grammar: S --> aAb | bBA
A --> ab | aAB
B --> aB |b
a. aaAbb
Parse Tree:
S
/ | \
a A b
/|\
a A B
|
b
Handles: b, aAB
Phrases: aaAbb, aaABb, aAb
Simple Phrase: b
b. bBab
Parse Tree:
S
/ | \
b B A
/ \
a b
Handles: ab
Phrases: bBab, bBA
Simple Phrase: ab
c. aaAbBb
aaAbBb --> aSBb --> aSBB --> x
or aaAbBb--> aaAbBB --> aSBB --> x
Therefore the last string can not be derived from the given grammar.