CSci 658-01: Software Language Engineering
Spring 2018 Assignment #1

H. Conrad Cunningham

23 February 2018

Revised Deadline Wednesday, 28 February, 2018, 11:59 p.m.

Original Deadline Monday, 26 February, 2018, 11:59 p.m.

General Instructions

All homework and programming exercises must be prepared in accordance with the instructions given in the Syllabus. Each assignment must be submitted to your instructor by its stated deadline.

Assignment #1 Description

  1. Use an approved language (see below), redesign and implement a semantic model and direct execution mechanism as described in Fowler’s State Machine DSL (Secret Panel) case study.

    This should include appropriate replacements for Fowler’s descriptions in his DSL book and for the instructor’s files StateMachine.scala, StateMachineTest.scala, CommandChannel.scala, and StateMachineDirect.sh.

    You will be expected to use your semantic model implementation in Assignment #2 (a DSL parser).

  2. When complete, submit your source code, test input, test program, etc. files to the course Blackboard site.

    Be sure to give instructions on how to build your program from the source.

    Remember that the instructor prefers to compile and execute your solution on his MacOS systems. Make it easy for him!

  3. This is an individual assignment. Be sure to document what resources you used in constructing your solution.

  4. Do not use Java or Scala because there are readily available solutions in the course materials. You may use Python (preferably Python 3) or any other interesting language. Talk to your instructor if you have questions about the language choice.

  5. Alternative: If you have developed a similar state machine model previously, you may instead develop a semantic model for Fowler’s Lair Configuration DSL. If you do, you must use a language other than Ruby or Lua, and, for Assignment #2, you must develop an external DSL (instead of an internal DSL as the Lair article describes).