Compiler Design
Compiler Design
QUESTION BANK
VI SEMESTER
1904602 – COMPILER DESIGN
Regulation – 2019
Academic Year 2021 – 2022 EVEN
Prepared by
Dr. K. Devi, Assistant Professor/CSE
Mrs.S.Shanthi, Assistant Professor/CSE
SRM VALLIAMMAI ENGNIEERING COLLEGE
(An Autonomous Institution)
SRM Nagar, Kattankulathur – 603203.
7 Solve the given regular expression into NFA using Thompson Apply BTL3
construction
i)(a/b)* abb (a/b)*. (7)
ii)ab*/ab (6)
8 Create DFA the following regular expression.((ε /a)b*)* (13) Create BTL6
9 (i)Illustrate the algorithm for minimizing the number of states of a (8) Apply BTL3
DFA
(ii)Minimize the following states of DFA (5)
i) 10. Describe in detail about the subset construction of DFA from NFA (13) Remember BTL1
11 Define Lex and Lex specifications. How lexical analyzer is (13) Remember BTL1
constructed using lex? Give an example.
12 (i)Explain the lex program for tokens. (7) Evaluate BTL5
(ii) Describe in detail the tool for generating lexical analyzer. (6)
13 Find the NFA for the given regular expression and find the (13) Analyze BTL4
minimized DFA for the constructed NFA..( a* / b*)*
14 Find the minimized DFA for the regular expression: (13) Analyze BTL4
( 0 + 1 ) * (0 + 1) 1 0.
PART-C (15- MARK )
1. (i) Create languages denoted by the following regular (9) Create BTL6
expressions
a) (a|b)*a(a|b)(a|b)
b) a*ba*ba*ba*
c) !! (aa|bb)*((ab|ba)(aa|bb)*(ab|ba)(aa|bb)*)*
(ii) Write regular definitions for the following languages: (6)
a)All strings of lowercase letters that contain the five vowels
in order.
b)All strings of lowercase letters in which the letters are in
ascending lexicographic order.
c)Comments, consisting of a string surrounded by / and /, without
an intervening */, unless it is inside double-quotes (")
2. Find transition diagrams for the following regular expression (15) Evaluate BTL5
and regular definition.
a(a|b)*a
((ε|a)b*)*
All strings of digits with at most one repeated digit.
All strings of a's and b's that do not contain the substring
abb.
All strings of a's and b's that do not contain the
subsequence abb.
3. .Prove that the following two regular expressions are equivalent (13) Analyze BTL4
by showing that the minimum state DFA's are same :
a) (a/b)*
b) (a*/b*)*
4. Explain in detail the tool for generating Lexical-Analyzer with an (15) Create BTL6
example program.
UNIT II SYNTAX ANALYSIS
Role of Parser – Grammars – Error Handling – Context-free grammars – Writing a grammar – Top
Down Parsing - General Strategies Recursive Descent Parser Predictive Parser-LL(1) Parser-Shift
Reduce Parser-LR Parser-LR (0)Item Construction of SLR Parsing Table -Introduction to LALR
Parser - Error Handling and Recovery in Syntax Analyzer-YACC.
PART-A (2 - MARKS)
Q.No QUESTIONS BT Level Competence
1. Eliminate the left recursion for the grammar. Create BTL6
S → Aa | b
A →Ac | Sd |ε
2. Define handle pruning. Remember BTL1
3. Compute FIRST and FOLLOW for the following grammar Apply BTL3
S → AS
S →b
A →SA
A→a
4. Describe the concepts of Predictive parsing . Remember BTL1
5. Differentiate Top Down parsing and Bottom Up parsing? Understand BTL2
6. Define Recursive Descent Parsing. Remember BTL1
7. State the different error recovery methods of predictive parsing. Remember BTL1
8. Write an algorithm for finding FOLLOW. Analyze BTL4
9. What is the main idea of Left factoring? Give an example. Understand BTL2
10. Define LL(1) Grammar. Remember BTL1
11. Difference between ambiguous and unambiguous grammar. Analyze BTL4
12. Define parser. Explain the advantages and disadvantages of LR Evaluate BTL5
parsing?
13. Define Augmented Grammar with an example. Remember BTL1
14. Evaluate the conflicts encountered while parsing? Evaluate BTL5
15. Explain the categories of shift reduce parsing. Analyze BTL4
16. How to create an input and output translator with YACC. Create BTL6
17. Describe the four possible actions of LR Parsing. Understand BTL2
18. Solve the following grammar is ambiguous: S→aSbS / bSaS / € Apply BTL3
19. Discuss when Dangling reference occur? Understand BTL2
20. Illustrate the use of GOTO function. Apply BTL3
PART-B (13- MARKS)
1. (i)Explain left recursion and Left Factoring. (7) Analyze BTL4
(ii)Eliminate left recursion and left factoring for the following (6)
grammar.
E→E+T|E-T|T
T → a | b | ( E ).
2. (i)Parse the input string 000111 for the grammar S-> 0S1| 0 (6) Create BTL6
(ii)Construct a parse tree for the input string w-cad using top (7)
down parser .
S->cAd
A->ab|a
3. (i)Analyze the give grammar to construct predictive parser (13) Analyze BTL4
S→ +SS | *SS | a with the string “+*aa.
4. (i)Evaluate predictive parsing table for the following grammar (9) Evaluate BTL5
E→E+T | T
T→T*F | F
F→(E) | id
(ii) Parse the string id+id*id (4)
5. (i).Describe on detail about the various types of parser (7) Remember BTL1
(ii)Discuss about the context-free grammar. (6)
6. (i).Discuss in detail aabout the role of parser. (7) Remember BTL1
(ii).What are the Error recovery techniques used in Predictive (6)
parsing? Explain in detail.
7. (i)Give the predictive parser table for the following grammar. (8) Understand BTL2
S→ (L) | a
L→ L, S | S (5)
(ii)Parse the string (a, (a, a)) .
8. Analyze the following grammar is a LALR grammar. (13) Analyze BTL4
S->CC
C->cC|d
(ii)Parse the input string ba using the table generated.
9. (i)Define YACC parser generator. List out the Error recovery (8) Remember BTL1
actions in YACC.
(ii) Define SLR (1) parser. Describe the Steps for the SLR parser. (5)
10. (i) Show SLR parsing table for the following grammar (9) Apply BTL3
A->(A)|a
T→T*F | F
F→F*| a| b
12 (i)Consider the following grammar (10) Apply BTL3
S →AS|b
A→SA|a.
Construct the SLR parse table for the grammar.
(ii)Show the actions of the parser for the input string “abab”. (3)
13. Give the LALR for the given grammar. (13) Understand BTL2
S->AA
A->Aa|b
14. Examine the following grammar using canonical parsing table. (13) Remember BTL1
S->CC
C->cC|d
PART-C (15 -MARKS)
1. (i)What is Leftmost derivation and Rightmost derivation . (8) Create BTL6
Draw leftmost derivation and Rightmost derivation for the following.
E->E+E|E*E| id
(ii)What is an ambiguous and unambiguous grammar? Identify (7)
the following grammar is ambiguous or not.
E→E+E | E*E | (E)|-E |id for the sentence id +id*id
2 Explain in detail about the various types of Top –down parsing. (15) Evaluate BTL5
4 (i)What is CFG .Explain in detail about the Context-Free (8) Evaluate BTL5
Grammar
(ii)Construct Stack implementation of shift reduce parsing for the (7)
grammar
E->E+E
E->E*E
E->(E)
E->id and the input string id1+id2*id3
.
UNIT-III INTERMEDIATE CODE GENERATION
Syntax Directed Definitions, Evaluation Orders for Syntax Directed Definitions, Intermediate
Languages: Syntax Tree, Three Address Code, Types and Declarations, Translation of Expressions,
Type Checking.
PART-A (2 - MARKS)
1. List out the two rules for type checking. Remember BTL1
2. Compare synthesized attributes and inherited attributes. Analyze BTL4
3. What is Annotated parse tree? Remember BTL1
4. Define Type checker. Remember BTL1
5. What is a syntax tree? Draw the syntax tree for the assignment Create BTL6
statement a := b * -c + b * -c
6. Define type systems. Remember BTL1
7. Express the rule for checking the type of a function. Understand BTL2
8. Define Syntax directed definition of a simple desk calculator. Remember BTL1
9. Identify the different types of intermediate representation. Evaluate BTL5
10. Give the difference between syntax-directed definitions and Understand BTL2
translation schemes.
11. State the type expressions. Remember BTL1
12. Illustrate the methods of implementing three-address statements. Apply BTL3
13. Differentiate S-attribute and L-attribute definitions. Analyze BTL4
14. Create postfix notation for the given expression a+b*c. Create BTL6
15. Translate the conditional statement if a<b then 1 else 0 into three Understand BTL2
address code.
16. Test whether the following rules are L-attribute or not? Semantic Evaluate BTL5
rules
A.s = B.b;
B.i = f(C.c,A.s)
17. What are the methods of representing a syntax tree? Understand BTL2
18. Explain the syntax directed definition for if-else statement Analyze BTL4
19. Examine the usage of syntax directed definition Apply BTL3
20. Show the three address code sequence for the assignment Apply BTL3
statement. d=(a-b)+(a-c)+(a-c)
PART-B (13- MARKS )
1. Discuss the following in detail about the Syntax Directed Understand BTL2
Definitions.
(i)Inherited Atrributes and Synthesized attributes. (7)
(ii) Evaluate SDD of a parse tree. (6)
Identify the annotated parse tree for the following expression Evaluate BTL5
2. (i)(3+4)*(5+6)n (6)
(ii)1*2*3*(4+5)n (7)
Using the given SDD
Production Semantic Rules
D —>TL L.inh = T.type
3. Suppose that we have a production A→BCD. Each of the four non (13) Analyze BTL4
terminal A, B, C and D have two attributes: S is a synthesized
attribute and i is an inherited attribute. Analyze For each of the sets
of rules below tell whether (i)the rules are consistent with an S-
attributed definition(ii) the rules are consistent with an L-attributed
definition and(iii) whether the rules are consistent with any
evaluation order at all?
a) A.s = B.i + C.s
b) A.s = B.i + C.s and D.i = A.i + B.s.
4. Illustrate in detail about the various instructions forms of three Apply BTL3
address instruction with suitable examples (!3)
5. Discuss in detail about Understand BTL2
(i)Dependency graph (10)
(ii)Ordering Evaluation of Attributes. (3)
6. Create variants of Syntax tree. Explain in detail about it with (13) Create BTL6
suitable examples.
7. (i).Analyse the common three address instruction forms. (7) Analyze BTL4
(ii). Explain the two ways of assigning labels to the following three (6)
address statements
Do i=i+1;
While (a[i]<v);
8. Describe.in detail about Remember BTL1
(i) Quadruples (7)
(ii) Triples. (6)
9. (i) Describe in detail about addressing array Elements. (6) Remember BTL1
(ii) Discuss in detail about Translation of array reference. (7)
Describe in detail about types and declaration with suitable (13) Remember BTL1
10. examples.
11. Compare three address code for expression with the Incremental (13) Analyze BTL4
translation.
12. Show the intermediate code for the following code segment along (13) Understand BTL2
with the required syntax directed translation scheme
while ( i < 10 )
if ( i % 2 == 0 )
evensum = evensum + i
else
oddsum = oddsum + i
13. (i)State the rules for type checking with example. (7) Remember BTL1
(ii) Give an algorithm for type inference and polymorphic function. (6)
14. Illustrate an algorithm for unification with its operation. (13) Apply BTL3
PART-C(15 -MARKS)
1. Create the following uind the arithmetic expression a+- (b+c)* (15) Create BTL6
into
(i)Syntax tree
(ii)Quadruples
(iii)Triples
(iv)Indirect Triples
2. Explain what is SDD and examine syntax-directed definition to (15) Evaluate BTL5
differentiate expressions formed by applying the arithmetic
operators + and * to the variable x and constants ; expression :
x*(3*x+x*x)
3. Generate an intermediate code for the following code segment (15) Create BTL6
with the required syntax-directed translation scheme.
if ( a > b)
x=a+b
else
x=a-b
4. What is Type conversion? What are the two types of type (15) Evaluate BTL5
conversion? Formulate the rules for the type conversion.
UNIT IV- RUN-TIME ENVIRONMENT AND CODE GENERATION
Storage Organization, Stack Allocation Space, Access to Non-local Data on the Stack, Heap
Management - Issues in Code Generation - Design of a simple Code Generator.
PART-A (2 -MARKS)
1. List out limitations of the static memory allocation. Remember BTL1
How the storage organization for the run-time memory is Apply BTL3
2.
organized?
3. What is heap allocation? Remember BTL1
4. How the activation record is pushed onto the stack. Apply BTL3
5. Explain the storage allocation strategies. Analyze BTL4
6. State the principles for designing calling sequences. Remember BTL1
7. List out the dynamic storage techniques. Remember BTL1
8. Define the non-local data on stack. Remember BTL1
9. Define variable data length on the stack. Remember BTL1
10. Differentiate between stack and Heap allocation Analyze BTL4
11. Distinguish between static and dynamic storage allocation. Understand BTL2
12. Discuss the main idea of Activation tree. Understand BTL2
13. Give the fields in an Activation record. Understand BTL2
14. Compose space efficiency and program efficiency. Create BTL6
15. Construct typical memory hierarchy configuration of a computer. Evaluate BTL5
16. How would you solve the issues in the design of code generators? Apply BTL3
17. Evaluate Best-fit and Next-fit object placement. Evaluate BTL5
Prepare optimal code sequence for the given sequence Create BTL6
t=a+b
18.
t=t*c
t=t/d
19. Analyze the different forms of machine instructions. Analyze BTL4
20. Discuss the four principle uses of registers in code generation. Understand BTL2
PART-B (13- MARKS )
1. (i)Illustrate the storage organization memory in the perspective of (8) Apply BTL3
compiler writer with neat diagram.
(ii)Compare static versus dynamic memory allocation. (5)
2. Explain in detail about the various issues in code generation with Evaluate BTL5
examples. (13)
3. (i)Develop a quicksort algorithm to reads nine integers into an (9) Create BTL6
array a and sorts them by using the concepts of activation tree.
(ii)Give the structure of the action record. (4)
4. How to a design a call sequences and analyze the principles of (13) Analyze BTL4
activation records with an example.
5. Discuss in detail about the activation tree and activation record (13) Understand BTL2
with suitable example
6. (i) Analyze the data access without nested procedure and the issues (7) Analyze BTL4
with nested procedure.
(ii)Give the version of quicksort in ML style using nested (6)
procedure.
7. (i)Discuss in detail about heap manager. (7) Understand BTL2
(ii)Describe in detail about the memory hierarchy of a computer (6)
8. Define fragmentation? Describe in detail about how to reduce the (13) Remember BTL1
fragment.
9. Write short notes on the following Remember BTL1
i. Best fit and next object placement. (7)
ii. Managing and coalescing free space (6)
10. Examine the problems with manual deallocation of memory and (13) Remember BTL1
explain how the conventional tools are used to cope with the
complexity in managing memory.
11. Explain in detail about instruction selection and register allocation (13) Analyze BTL4
of code generation.
12. Illustrate in detail about the code generation algorithm with an (13) Apply BTL3
example.
13. Describe the usage of stack in the memory allocation and discuss (13) Understand BTL2
in detail about stack allocation space of memory.
14. Define the heap management of memory and describe in detail (13) Remember BTL1
about it .
PART-C (15-MARKS)
1. Suppose the heap consists of seven chunks, starting at address (15) Evaluate BTL5
0. The sizes of the chunks, in order, are 80, 30, 60, 50, 70, 20, 40
bytes. When we place an object in a chunk, we put it at the high
end if there is enough space remaining to form a smaller chunk (so
tha t the smaller chunk can easily remain on the linked list of free
space). However, we cannot tolerate chunks of fewer that 8 bytes,
so if an object is almost as large as the selected chunk,we give it
the entire chunk and place the object at the low end of the chunk.If
we request space for objects of the following sizes: 32, 64, 48, 16,
in that order, what does the free space list look like after satisfying
the requests, if the
method of selecting chunks is a) First fit.b) Best fit.
2. Compare the stack and heap allocation memory in detail with (15) Analyze BTL4
suitable examples.
3. Generate code for the following sequence assuming that n is in a (15) Create BTL6
memory location
s=0
i=0
L1 : if I > n goto L2
s=s+i
i=i+1
goto L1
L2 :
4. Create following assignment statement into three address code (15) Create BTL6
D:=(a-b)*(a-c)+(a-c)
Apply code generation algorithm to generate a code sequence for
the three address statement. (13)
UNIT V- CODE OPTIMIZATION
Principal Sources of Optimization – Peep-hole optimization - DAG- Optimization of Basic Blocks
Global Data Flow Analysis - Efficient Data Flow Algorithm.
PART-A (2 -MARKS)
1. List out the examples of function preserving transformations. Remember BTL1
2. Illustrate the concepts of copy propagation. Apply BTL3
3. State the use of machine Idioms. Remember BTL1
4. Show the flow graph for the quicksort algorithm Apply BTL3
5. Apply Apply BTL3
6. Identify the constructs for optimization in basic block. Remember BTL1
7. List out the properties of optimizing compilers. Remember BTL1
8. Define the term data flow analysis. Remember BTL1
9. How is liveness of a variable calculated? Identify it. Remember BTL1
10. What is DAG? Point out advantages of DAG. Analyze BTL4
11. Give the uses of gen and Kill functions Understand BTL2
12. Discuss the concepts of basic blocks and flow graphs. Understand BTL2
13. Give the main idea of dead code elimination and constant folding. Understand BTL2
14. Prepare the three address code sequence for the assignment Create BTL6
statement.
d:= ( a- b) + (a-c) + (a-c).
15. Construct and explain the DAG for the follow basic block. Evaluate BTL5
d:= b * c
e:= a+ b
b:= b*c
a:= e-d.
16. What role does the target machine play on the code generation Analyze BTL4
phase of the compiler? Analyze it.
17. Draw the DAG for the statement a= (a*b+c) – (a*b+c) and Evaluate BTL5
evaluate it.
18. Develop the code for the follow C statement assuming three Create BTL6
registers are available.
x = a / (b + c) – d * (e + f)
19. Point out the characteristics of peephole optimization. Analyze BTL4
20. Define algebraic transformations. Give an example Understand BTL2
PART-B(13 MARKS )
1. Explain briefly about the principal sources of optimization. (13) Evaluate BTL5