CSE401 Assignment 2

Assigned: Friday 9/29/00

Readings (in the Dragon Book)
Read before the lecture on the specified day

10/2/00 Monday Sections 3.6, 3.7
10/4/00 Wednesday Sections 4.1, 4.2
10/6/00 Friday Section 4.4, pp. 181-185;
Section 4.3, pp. 176-178



10/6/00 Friday Exercises 3.3b, 3.6abcd ("describe" means a high-level English description, not a direct translation of the symbols into English), 3.7af, 3.14 (for each of the special symbols *, ? and [...] in Unix filename expressions, show the equivalent regular expressions)
10/10/00 Tuesday (due by 5PM!) Exercises 3.16abc, 3.17abc
  Extend the description of the PL/0 lexical structure to include the new language features.

The changes to the lexical structure are:

add comments (from # to the end of the line) as whitespace
allow underscores in identifiers
support the new reserved words: else, for, to, break, return, array, of, bool, true, false, and, or
support new punctuation tokens: [, ]
  Extend the PL/0 scanner to scan the extended language.  Use the -T option to stop compiling after scanning.
  For this and all future projects (until told otherwise), turn in "enscript -2r"ed (or equivalent) laser-printer listings of the modified files of your C++ implementation, with your changes highlighted, along with sample input programs in the extended language and outputs logs that demonstrate that the modified parts of your compiler correctly implement the extended language.  (Make sure your names and student numbers are marked clearly.)

For all implementation projects, you will be graded on correctness of your implementation, on clarity and good design of your implementation, and on sufficiency of your test cases.