\PassOptionsToPackage{unicode=true}{hyperref} % options for packages loaded elsewhere
\PassOptionsToPackage{hyphens}{url}
%
\documentclass[]{article}
\usepackage{lmodern}
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\usepackage{fixltx2e} % provides \textsubscript
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage{textcomp} % provides euro and other symbols
\else % if luatex or xelatex
  \usepackage{unicode-math}
  \defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
\fi
% use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
% use microtype if available
\IfFileExists{microtype.sty}{%
\usepackage[]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\IfFileExists{parskip.sty}{%
\usepackage{parskip}
}{% else
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
}
\usepackage{hyperref}
\hypersetup{
            pdftitle={CSci 658-01: Software Language Engineering Spring 2018 Assignment \#2},
            pdfauthor={H. Conrad Cunningham},
            pdfborder={0 0 0},
            breaklinks=true}
\urlstyle{same}  % don't use monospace font for urls
\setlength{\emergencystretch}{3em}  % prevent overfull lines
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{0}
% Redefines (sub)paragraphs to behave more like sections
\ifx\paragraph\undefined\else
\let\oldparagraph\paragraph
\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
\fi
\ifx\subparagraph\undefined\else
\let\oldsubparagraph\subparagraph
\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
\fi

% set default figure placement to htbp
\makeatletter
\def\fps@figure{htbp}
\makeatother

\usepackage{caption}
\DeclareCaptionLabelFormat{nolabel}{}
\captionsetup{labelformat=nolabel}

\title{CSci 658-01: Software Language Engineering\\
Spring 2018 Assignment \#2}
\author{\textbf{H. Conrad Cunningham}}
\date{\textbf{8 March 2018}}

\begin{document}
\maketitle

\hypertarget{revised-deadline-tuesday-20-march-2018-1159-p.m.}{%
\subsection{Revised Deadline Tuesday, 20 March, 2018, 11:59
p.m.}\label{revised-deadline-tuesday-20-march-2018-1159-p.m.}}

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

\hypertarget{general-instructions}{%
\subsection{General Instructions}\label{general-instructions}}

All homework and programming exercises must be prepared in accordance
with the instructions given in the \href{../658syl_sp18.html}{Syllabus}.
Each assignment must be submitted to your instructor by its stated
deadline.

\hypertarget{assignment-2-description}{%
\subsection{Assignment \#2 Description}\label{assignment-2-description}}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\item
  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.
\item
  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!
\item
  This is an individual assignment. Be sure to document what resources
  you used in constructing your solution.
\item
  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.
\item
  \textbf{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 \emph{external} DSL for the problem.
\end{enumerate}

\end{document}
