0% found this document useful (0 votes)
59 views

Q1. Define The Following With Simple Example (Choose Five Only) :: A Grammar That Produces More Than One Parse Tree For Some

The document is the final examination for a compilers design course given in the third term of 2011-2012 at the University of Technology's Department of Computer Sciences. The exam contains 6 questions testing knowledge of compilers topics like ambiguity, three-address code, compiler components, operator grammars, parsing conflicts, grammar transformations, LL(1) grammars, predictive parsing, SLR parsing, and code generation using triple and quadruple forms. Students are given 3 hours to complete the exam, which is worth a total of 60 marks.

Uploaded by

Ahmed Fatlawi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
59 views

Q1. Define The Following With Simple Example (Choose Five Only) :: A Grammar That Produces More Than One Parse Tree For Some

The document is the final examination for a compilers design course given in the third term of 2011-2012 at the University of Technology's Department of Computer Sciences. The exam contains 6 questions testing knowledge of compilers topics like ambiguity, three-address code, compiler components, operator grammars, parsing conflicts, grammar transformations, LL(1) grammars, predictive parsing, SLR parsing, and code generation using triple and quadruple forms. Students are given 3 hours to complete the exam, which is worth a total of 60 marks.

Uploaded by

Ahmed Fatlawi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

University of Technology

Department of Computer Sciences


Final Examination 2011-2012
1st Term
Subject:Compilers Design Year:Third
Division: All Branches Time: 3 Hours
Examiner:Dr. Abeer Tariq Date: / May /2012

2102 ‫حلول اسئلة الدور األول‬


Q1. Define the following with simple example (choose five only):
1.)Ambiguity: A grammar that produces more than one parse tree for some
sentences. An ambiguous grammar is one that produces more than one leftmost or
more than one rightmost derivation for the same sentence.

(1) three-address code


 Each statement contains at most 3 operands; in addition to “: =”,
i.e., assignment, at most one operator.
 An” easy” and “universal” format that can be translated into most
assembly languages
A:=B+C
(2) Compiler
Is a program (translator) that reads a program written in one language, (the
source language) and translates into an equivalent program in another language (the target
language).

(3) Operator grammar


The operator-precedence parser is a shift –reduce parser that can be
easily constructed by hand. It used for a small class of grammars which
is called operator grammar. These grammars have the property:
- That no production right side is ε
- And no production right side has two adjacent nonterminals.
Example: The following grammar for expressions:
E → EAE | (E) | –E |id
A→+|-|*|/|^
(4) Handle
Definition: a handle is a substring that
1- matches a right hand side of a production rule in the grammar and
2- Whose reduction to the nonterminal on the left hand side of that
grammar rule is a step along the reverse of a rightmost derivation.

(5) Conflicts
"Conficts" occur when an ambiguity in the grammar creates a situation where
the parser does not know which step to perform at a given point during parsing. There
are two kinds of conflicts that occur
1. shift-reduce: a shift reduce conflict occurs when the grammar indicates that
different successful parses might occur with either a shift or a reduce at a given point
during parsing.
The vast majority of situations where this conflict occurs can be correctly resolved by
shifting.
2- reduce-reduce : a reduce-reduce conflict occurs when the parser has two or more
handles at the same time on the top of the stack. Whatever choice the parser makes is
just as likely to be wrong as not. In this case it is usually best to rewrite the grammar
to eliminate the conflict, possibly by factoring.
(10 marks)
Q.2) briefly answer the following (choose three only)

A) Draw the diagram showing the position of parser in compiler model.

B) What is the difference between static and dynamic semantic?

Static semantic checks are performed at compile time


Type checking
Every variable is declared before used
Identifiers are used in appropriate contexts
Check subroutine call arguments
Dynamic semantic check are performed at run time, and the
compiler produces code that performs these checks
Array subscript values are within bounds
Arithmetic errors, e.g. division by zero
A variable is used but hasn't been initialized
When a check fails at run time, an exception is raised

C) Explain the three techniques of loop optimization with simple examples.

Code Motion
An important modification that decreases the amount of code in a
loop is code motion. This transformation takes an expression that yields
the same result independent of the number of times a loop is executed and
places the expression before the loop.
Ex1: While ( I <= limit-2)
Sol: t = limit-2
While (I <= t )
Induction Variable
Ex: X = 2 * y + 2 * h + 4
Sol: X = 2 * (y + h) +4
Note: use the algebra method to optimize the mathematical expression.
Reduction in strength
Reduction in strength, which replaces an expensive operation by a
cheaper one, such as a multiplication by an addition.
Ex: t4 = 4*j - 4

D) List the four error routines in the bottom-up parsing table, and what is the suitable
solution for each type.
(10 marks)
Q.3) Consider the following grammar G.

1. Eliminate left recursion:


2. Eliminate left factoring.
3. Prove that your grammar is LL(1) by whatever method you like.

3. After finding first and follow we will find that in first nonterminal that contain
empty there is not find the same terminal in the follow of that nonterminal so the
grammar is LL(1).
(10 marks)
Q.4) Consider the following grammar:

Parse the string " abaaba" by using predictive parsing method.


1. Eliminate the left recursion
E TE'
E' a b F E' | e
T FT'
T' b a T' | e
F a|b|[E]
2.Find first and follow
First Follow
L [,a,b $,]
L' a,e $,]
T [,a,b a,$,]
T' b,e a,$,]
S [,a,b a,b,$,]
3.parsing table
a b [ ] $
L E TE' E TE' E TE'
L' E' a b F E' E' e E' e
T T FT' T FT' T FT'
T' T' e T' b a T' T' e T' e
S F a F b F [E]
4.parse the sentence
Stack Input Output
$E abaaba $
$ E' T abaaba $ E TE'
$ E' T'F abaaba $ T FT'
$ E' T'a abaaba $ F a
$ E' T' baaba $
$ E' T' a b baaba $ T' b a T'
$ E' T' a aaba $
$ E' T' aba $ T' e
$ E' aba $
$ E' F b a aba $ E' a b F E'
$ E' F b ba $
$ E' F a$ F a
$ E' a a$
$ E' $ E' e
$ $
The sentence is accept

(10 marks)
Q.5) Given the following grammar:

The terminals are = {a,b,0,1} , and the nonterminals are={S,A,B}. Parse the sentence
"aa1bbbb" using SLR parsing method.

(10 marks)
Q.6) A: Write the triple and quadruple form for the following statement:

A[j] = B+( c + d ) * X[i] – Y/Z

1. Triple

op Arg 1 Arg2
(0) + c d
(1) =[ ] A i
(2) * 0 1
(3) / Y Z
(4) + B 2
(5) - 4 3
(6) [ ]= A J
= 6 5
2. Quadruple

op Arg 1 Arg2 result


+ c d T1
=[ ] A i T2
* T1 T2 T3
/ Y Z T4
+ B T3 T5
- T5 T4 T6
[ ]= A J T7
= T6 T7
B: Show a successful bottom up parse (stack) of input " bcac " using the parsing table
below:

(10 marks)

You might also like