Issuu on Google+

Programming Languages  Midterm Exam. 4/14/2014    1. (10%)  a. (5%)Please compare the advantages and disadvantages of using compilers and interpreters on  language implementation.   b. (5%)Please identify the type of error (i.e., lexical error, syntax error, or runtime error) for each  following case:   i.

illegal variable name,  

ii.

divided by zero,  

iii.

infinite loop,  

iv.

left brace is missing,  

v.

undefined function name.    

2. (10%)Consider the following grammar in BNF:   < S >→ a < S > c < B > | < A > |b   < A >→ c < A > |c   < B >→ d| < A >   Which of the following sentences are in the language generated by this grammar?   a. abcd  b. acd  c. acccbcc  d. accc  e. acccbd    3. (20%)Given the following grammar in BNF:   < expr >→< id >+< expr > | < id >*< expr > | (< epr >) | < id >   < id >→ A|B|C   a. (10%)Show the parse tree and the leftmost derivation for the statement  (A * (B + C ))   b. (10%)Show the phrases, simple phrases, and handle for the statement  (A * (B + C ))      

 


4. (15%)Given the following grammar:   < S >→< A >   < A >→< A >+< A > | < id >   < id >→ a|b|c   a. (5%)Prove that the given grammar is ambiguous.   b. (5%)Construct an equivalent BNF grammar which is unambiguous.   c. (5%)Convert the grammar of answer (b) to EBNF.     5. (10%)Convert the following EBNF to BNF  < S >→< A > {b < A >}   < A >→ a [b] < A >     6. (10%)Grammar writing for the following statement structure:   Function call with zero or more parameters such as: fun1(), fun2(x), fun3(10, x), etc. Each parameter can be  any identifier name ( < id > ) or any constant ( < const > ). The function name is also an identifier name.     7. (15%)Given the following grammar in BNF:   < S >→< S > b| < A > a   < A >→ b < A > |bc   a. (5%)Show the First set of each RHS of  S  and  A .   b. (10%)Rewrite the grammar in BNF that becomes suitable for recursive descent parsing.     8. (10%)Given the following grammar in EBNF:   < S >→ a < S > |b < A >   < A >→ b {a < A >}   Show a sketch of a recursice descent parsing program. The following terms can be used in your program  codes: lex(), error(), NextToken. The token code of terminal x is represented as token_x (e.g. token_a and  token_b).  


13974920381356002784