% CSci 658-01: Software Language Engineering \
  Spring 2018 Assignment \#2
% **H. Conrad Cunningham**
% **8 March 2018**
 

## Revised Deadline Tuesday, 20 March, 2018, 11:59 p.m.

Original deadline Monday, 5 March, 2018, 11:59 p.m.
  
## General Instructions

All homework and programming exercises must be prepared in accordance
with the instructions given in the
[Syllabus ](<../658syl_sp18.html>). Each assignment must be submitted
to your instructor by its stated deadline.

## Assignment \#2 Description

1.  Using an approved language (see below), redesign and implement one
    of the external Domain-Specific Language (DSL) parsing techniques
    for the State Machine DSL case study. You may use any techniques
    discussed in the Fowler DSL book or by your instructor. The DSL
    should work with your semantic model from Assignment #1.
	
	Discuss your choice of parser with the instructor. In some
	circumstances, you may choose an alternative approach.

#.  When complete, submit your source code, test DSL input, test
    program, etc. files to the course Blackboard site. 
	
	Be sure to describe your DSL's syntax and give instructions on how
    to build your program from the source code.
	
	Remember that the instructor prefers to compile and execute your
    solution on his MacOS systems. Make it easy for him!

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

#.  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.

#.  **Alternative**: If you chose an alternative to the State Machine
    in Assignment \#1, you must use the same problem and language for
    this assignment and develop an *external* DSL for the problem.


