LMU ☀️ CMSI 585
PROGRAMMING LANGUAGE FOUNDATIONS
HOMEWORK #3 Due: 2024-06-07

Learning Objectives

With this assignment you will demonstrate:

Readings and Videos

Please:

Submission Instructions

You may work alone or in groups of at most 3 students. If you choose to pair or triple up, DO NOT “partition” the work. Letting a team member do some problems while you do others cheapens your educational experience and leaves you behind. It is best for each student to do all of the problems, then meet as a group to (1) select the “best” answer for submission when more than one exist, and (2) teach each other: that is, if one group member is unable to do one of the problems, another group member can teach that student how it do it. Everyone is responsible for understanding the entire homework submission, so everyone should contribute to the entire assignment.

Submit your work in a single beautiful PDF uploaded to BrightSpace. Please do not submit photos of handwritten answers; you need to take pride in your work.

On the PDF, include each student’s name along with the list of which of the assigned readings were done. For each reading, mark it skimmed, read, or did-not-do. Then include answers to the following problems. For first first problem, your PDF should contain a link to a Node.js project hosted on Replit.com.

  1. Write a syntax checker for the language of Problem 2 of Homework 2 as a Node.js command line application using the Ohm Language Library. Your project should be hosted on Replit.com and must be completed by forking this Replit starter project and filling in the missing portions as instructed by the comments. Note that I've included a full set of unit tests for you. (TODO: I haven't written the starter project yet.)
  2. Problem 1.4.3 in Slonneger and Kurtz
  3. Problem 5.1.1 in Slonneger and Kurtz
  4. Problem 5.1.2 in Slonneger and Kurtz
  5. Problem 5.1.3 in Slonneger and Kurtz
  6. Problem 5.2.3 in Slonneger and Kurtz
  7. Problem 5.2.7 (a) in Slonneger and Kurtz
  8. Problem 8.5.1 in Slonneger and Kurtz
  9. Problem 8.5.9 in Slonneger and Kurtz
  10. Problem 8.6.3 (a) and (c) in Slonneger and Kurtz. You may use either Natural Semantics or Structural Operational Semantics.
  11. Problem 8.6.6 in Slonneger and Kurtz. You may use either Natural Semantics or Structural Operational Semantics.