Answer Key for CSE-304 Mid-term Exam of Fall '98
1.
a. b*(ab*ab*)*
b. b*(ab*ab*ab*)*
c. Start state: s0
Final state: s1
Transitions:
From To Symbol
s0 s0 b
s0 s1 e (epsilon)
s1 s2 a
s2 s2 b
s2 s3 a
s3 s3 b
s3 s1 e
d. Start state: s0
Final state: s1
Transitions:
From To Symbol
s0 s0 b
s0 s1 e (epsilon)
s1 s2 a
s2 s2 b
s2 s3 a
s3 s3 b
s3 s4 a
s4 s4 b
s4 s1 e
2.
%%
\"[^\"]*\" { yytext[yyleng-1] = 0 ; printf ("``%s''", yytext+1) ; }
.|\n { printf ("%c", yytext[0]) ; }
%%
3.
a&b. Number rules from 1 to 3. Let L -i-> R denote application of rule i
that takes L to R. Then the two distinct parse trees are the
result of the following rightmost derivations:
I. S -1-> aSbS -3-> aSb -1-> aaSbSb -2-> aaSbbSaSb -3-> aaSbSbab -3-> aaSbbab -3-> aabbab
and another parse tree is:
II. S -1-> aSbS -1-> aSbaSbS -3-> aSbaSb -3-> aSbab -1-> aaSbSbab -3-> aaSbbab -3-> aabbab
c. First(S) = {a, b, e}
Follow(S) = {$, a, b}
d. G3 is not LL(1) since it is ambiguous.
e. G3 is not SLR(1) since it is ambiguous.
4.
a. State 10, TOK_exp, TOK_frac
b.
%left TOK_frac
%nonassoc TOK_sqrt
%right TOK_exp
c. On TOK_exp, action shift is used. For others, reduce is used.
5.
a. O(Sigma * Pi)
b. O(n)
It is a tree of n leaves. Apart from the nodes whose children
are leaves, all other nodes are *binary*. So we have
3n-1 nodes (n leaves, n immediate parents of leaves, n-1 internal
binary nodes) in the parse tree