Question 1
Question
Which of the following is NOT a top-down parsing?
Question 2
Question
Which of the following is true for parser generator
Answer
-
The input of a parser generator is a token stream
-
The output of a parser generator is abstract syntax tree(AST)
-
CFG of a programming language is part of the input to a parser generator.
-
Flex is a parser generator
Question 3
Question
Which of the follwoing is NOT true for parser?
i. The parser is to process a token stream
ii. One of the major responsibilities of parser is to detect syntax errors.
iii. The output of parser is an abstract syntax tree.
Answer
-
i
-
i, ii
-
i, ii, iii
-
ii, iii
-
iii
-
None of the above.
Question 4
Question
Grammar that produce more than one parse tree for same sentence:
Answer
-
is ambiguous
-
is unambiguous
-
has syntax errors
-
is not LL(1) grammar
Question 5
Question
Which of the following is WRONG
Answer
-
A CFG grammar is said to be ambiguous if for a sentence, there is a leftmost derivation and a rightmost derivation
-
A DFG grammar is said to be ambiguous if for a sentence, there are two leftmost derivations.
-
A CFG grammar is said to be ambiguous if for a sentence, there are two rightmost derivations.
-
A CFG grammar is said to be ambiguous if for a sentence, there are two different parse tree representations.
Question 6
Question
The context free grammar S -> SS | 0S1 | 1S0| ε generates.
Answer
-
Equal number of 0's and 1's
-
Unequal number of 0's and 1's
-
Number of 0's followed by any number of 1's
-
None of the above.
Question 7
Question
Which of the following is a Tiger program with syntax errors?
Answer
-
1
-
"1"
-
x = 5
-
var x: int := 5
-
All of the above
Question 8
Question
Which of the following is a Tiger program without syntax errors?
Answer
-
(1, 2, 3)
-
(1; 2; 3;)
-
(1; 2; 3)
-
(1, 2, 3,)
-
None of the above
Question 9
Question
Which of the following is a Tiger expression with syntax errors?
Answer
-
a(1)
-
b[1]
-
c[2] of 3
-
(10)
-
NONE of the above
Question 10
Question
Which of the following derivations does a LL(1) parser use while parsing an input string? The input is assumed to be scanned in left to right order?
Answer
-
Leftmost derivation
-
Rightmost derivation
-
None of the above
Question 11
Question
Assume X (terminal or non-terminal) is the top symbol in the stack, and c is the next symbol in the input in LL(1) parsing, which of the following indicates a syntax error?
i. x is any terminal other than c
ii. x is a non-terminal, but the cell M[X,c] in the parsing table is empty
iii. x is any non-terminal other than c
iv. x is a non-terminal, but the cell M[X,c] in the parsing table is not empty
Answer
-
i
-
i and iii
-
i, ii, iii, and iv
-
None of the above
Question 12
Question
Assume FIRST(A) = {b, c, d, ε} for a non-terminal A, what's the result of FIRST(eAf) where e and f are terminals?
Answer
-
{b, c, d, e}
-
{b, c, d}
-
{e, f}
-
{e}
Question 13
Question
Assume FIRST(A) ={b, c, d, ε} for a non-terminal A, what's the result of FIRST(Ae) where e is a terminal?
Answer
-
{b, c , d, e}
-
{b, c, d}
-
{e}
-
{b, c, d, e, ε}
Question 14
Question
Assume FIRST(A) ={1, 2, ε}, and FIRST(B) = {b, d} for non- terminal A and B, what's the result of FIRST(AB)?
Answer
-
{b, d, ε}
-
{1, 2}
-
{b, d, 1, 2}
-
{1, 2, ε}
-
{b, d, 1, 2, ε}
Question 15
Question
Assume FIRST(A) ={1, 2, ε}, and FIRST(B) = {b, d} for non- terminal A and B, what's the result of FIRST(BA)?
Answer
-
{b, d}
-
{1, 2}
-
{b, d, 1, 2}
-
{1, 2, ε}
-
{b, d, 1, 2, ε}
Question 16
Question
Assume FIRST(A) ={1, 2, ε}, and FIRST(B) = {b, d, ε} for non- terminal A and B, what's the result of FIRST(BA)?
Answer
-
{b, d, ε}
-
{1, 2}
-
{b, d, 1, 2}
-
{1, 2, ε}
-
{b, d, 1, 2, ε}
Question 17
Question
Assume FOLLOW(A) ={b, d}, FIRST(B) = {1, 2}, for non-terminal A and B, which of the following statements is correct for a production: A-> ABgh where g and h are terminals?
Answer
-
FOLLOW(B) contains g
-
FOLLOW(B) contains h
-
FOLLOW(B) contains both g and h
-
g and h are not in FOLLOW(B)
-
FOLLOW(B) contains b, and d
Question 18
Question
Assume FOLLOW(A) ={b, d}, FIRST(B) = {1, 2, ε}, for non-terminal A and B, which of the following statements is correct for a production: A-> ACB where C is a non-terminal?
Answer
-
FOLLOW(C) contains {1, 2, ε}
-
FOLLOW(C) contains {b, d}
-
FOLLOW(C) contains {1, 2, b, d, ε}
-
FOLLOW(C) contains {1, 2, b, d}