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

HW 2

This document outlines the homework assignment for the CS 2210: Compiler Design course. It includes 6 problems covering topics like languages and grammars, context-free and regular grammars, constructing First and Follow sets, determining if grammars are LL(1), LR(1), SLR(1) or LALR(1), left-recursion removal, and resolving parsing conflicts. Students are asked to answer questions, write grammars, draw DFAs and parse tables to demonstrate their understanding of compiler theory concepts.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
72 views

HW 2

This document outlines the homework assignment for the CS 2210: Compiler Design course. It includes 6 problems covering topics like languages and grammars, context-free and regular grammars, constructing First and Follow sets, determining if grammars are LL(1), LR(1), SLR(1) or LALR(1), left-recursion removal, and resolving parsing conflicts. Students are asked to answer questions, write grammars, draw DFAs and parse tables to demonstrate their understanding of compiler theory concepts.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

CS 2210: Compiler Design

Homework #2
Due Time: March 4th, 2019

1. (16 points) Answer the following questions about languages and grammars.

a) Is the C programming language a context free language? Why or why not?


b) Can a language have ambiguous and unambiguous grammars at the same time? Why
or why not?
c) Explain in your own words why ambiguous grammars can never be LL or LR.
d) Explain in your own words why LR(1) is more powerful than LL(1).

2. (12 points) Answer the following questions about context free and regular grammars.

= {a, b, ’}. E.g.


P
a) Write a grammar for non-empty strings with matching quotes where
’aba’, aba”bb, aa’a’a’a’.
= {a, b, (, )}.
P
b) Write a grammar for non-empty strings with matching parentheses
E.g. (aba), aba()bb, aa(a(a)a).
c) Is the language expressed in a) a regular language? If not, explain why not. If so,
modify grammar so that it is a regular grammar (if not already).
d) Is the language expressed in b) a regular language? If not, explain why not. If so,
modify grammar so that it is a regular grammar (if not already).

3. (10 points) Given the following grammar, construct the First sets for each RHS (right hand
side) and Follow sets for each non-terminal symbol.
A → BAc | F E
B → bEF | g
E →e|ε
F → f | EH
H→h

1
4. (16 points) For each of the below grammars, answer the following questions:
1) Is the grammar LL(1)? If so, write the LL(1) parse table. If not, point out the conflict
using First and Follow sets.
2) Is the grammar LL(k)? If so, show how extra lookahead resolves the conflict. If not, point
out the unresolved conflict using First and Follow sets.
? Note: LL(k) is LL with a finite amount of lookahead.
3) Is the grammar ambiguous? If yes, find the input that produces two or more left-derivations.
? Note LL(1) ⊂ LL(k) ⊂ L(Unambiguous). So, (2) needs answering only if (1) is false. (3)
needs answering only if both (1) and (2) are false.

a) S → [S | A
A → [A] | ε
b) S → ABc
A→a|ε
B →b|ε
c) S → ABBA
A→a|ε
B →b|ε
d) S → aAbc|bAc
A→b|ε

5. (16 points) Given the following grammar, answer the below questions:
E → E + E | id

a) Write a new grammar after performing left-recursion removal.


b) Is the grammar in a) LL(1)? If not, point out the conflict using First and Follow sets.
c) Modify the original grammar such that the + operator is left associative, and then per-
form left-recursion removal. Write the new grammar.
d) Is the grammar in c) LL(1)? If not, point out the conflict using First and Follow sets

6. (30 points) For each of the below grammars, answer the following questions:
(1) Is the grammar SLR(1)? If so, draw a DFA and the corresponding parse table. If not,
point out the conflict.
(2) Is the grammar LALR(1)? If so, show how the lookahead component resolves the con-
flict. If not, show why it is not resolved.
(3) Is the grammar LR(1)? If so, show how state splitting resolves the conflict. If not, show
why it is not resolved.
? Note SLR(1) ⊂ LALR(1) ⊂ LR(1). So, (2) needs answering only if (1) is false. (3) needs
answering only if both (1) and (2) are false.

2
a) (10 points) Σ={v, =, ;, +, (, )}.
S → v = A;
A→PE
P→Pv = |ε
E→E + T|T
T→v|(A)

b) (10 points) Σ={a, b, c}.


S → bAb | Ac | ab
A→a

c) (10 points) Σ={a, b, c, d}.


S → Aa | bAc | Bc | bBa
A→d
B→d

You might also like