Created: Thu 14 Oct 2008
Last modified:
Assigned:
Thu 14 Feb 2008
Due:
Mon 25 Feb 2008
Note: This assignment cannot be turned in late. See
"Specific Instruction (1)" below.
General Instructions
- Please review the
grading policy
outlined in the course information page.
- On the first page of each part of your solution write-up,
you must make explicit which problems are to be graded for
"regular credit", which problems are to be graded for "extra credit",
and which problems you did not attempt.
Please use a table something like the following
Problem | 01 | 02 | 03 | 04 |
05 | 06 | 07 | 08 | 09 | ... |
Credit | RC | RC | RC | EC | RC |
RC | NA | RC | RC | ... |
where "RC" is "regular credit", "EC" is "extra credit", and "NA"
is "not applicable" (not attempted). Failure to do so will result
in an arbitrary set of problems being graded for regular
credit, no problems being graded for extra credit, and a five percent
penalty assessment.
- You must also write down with whom you worked on the assignment. If this
changes from problem to problem, then you should write down this
information separately with each problem.
Specific Instructions
- Note: This assignment cannot be handed in late.
I will be passing out solutions to this assignment the day it is
due, in preparation for the midterm exam.
- This is a somewhat longer assignment than usual, and it is worth
somewhat more points than usual. You also have more time to
complete this assignment than usual: note that it is due on Mon,
Feb 25.
- In Problems 1, 2, 3, and the first half of Problem 4, you are
required to construct a context-free grammar for a given language.
You should consider the five CFG patterns discussed in class and
how these patterns can be used to construct CFGs for the languages
in question. You solutions should be modeled after the solution
we gave in class for Sipser Exercise 2.6 (c); a handout
describing this solution is
available here.
Note: You must describe what each variable in
your context-free grammar does, in a manner similar to the
solution given in
the handout.
- In Problem 5 and the second half of Problem 4, you are
required to construct a PDA for a given language. You should give
finite state diagrams for such PDAs, similar to those given in
class and in Figures 2.15, 2.17, and 2.19 from the Sipser
text.
- In Problem 6, you are to demonstrate that the given grammar
is ambiguous. To do so, you must show multiple left-most (or
right-most) derivations for a string in the given language. (See
pp. 105-106 of the Sipser text.) To attach a "meaning" to any
such derivation, you will likely need to consider the parse trees
associated with these derivations.
- In Problems 7, 8, and 9, you should use the Pumping Lemma for
context-free languages to prove that the languages in question are
not context-free. See Examples 2.36, 2.37, and 2.38 from the
Sipser text for examples of such Pumping Lemma proofs. See also
the following
handout.
Note: I would strongly suggest that you attempt more than
one of these as you will almost certainly see such a problem on
your midterm exam.
Problems
Required: 7 of the following 9 problems
Points: 16 pts per problem
- Exercise 2.4 (b,c)
- Exercise 2.6 (d)
- Exercise 2.4 (e)
- Construct a CFG for the following language:
{ai bj |
i <= j <= 2i}
- Exercises 2.9 and 2.10.
- Give finite state diagrams for PDAs which accept the languages
described in Exercises 2.4 (d) and 2.6 (c).
Hint: Make judicious use of non-determinism.
- Problem 2.27 (a).
Hint: The ambiguity present in the grammar shown in
Exercise 2.27 is due to the if-then
and
if-then-else
statements. The ambiguity you will discover is
referred to as the "dangling else" ambiguity.
- Problem 2.30 (a)
- Problem 2.30 (d)
- Problem 2.31
Switch to:
jaa@ccs.neu.edu