Sle1314 Assignment2

SLE WS 2013 Assignment 2

Implementation of the FSML DSL

Description

The specification of FSML is available here:

http://softlang.uni-koblenz.de/slepro/fsml.pdf

The underlying code is available here:

https://github.com/slebok/slepro/tree/master/languages/fsml

Deliverables

You are supposed to re-implement FSML in a faithful manner on a platform of your choice.

You need to cover the specification as follows:

  • You need to parse the concrete textual syntax (Section 2).
  • You may need an additional abstract syntax (Section 3).
  • You need to check all the constraints (Section 4).
  • You need to implement the reference (simulation) semantics (Section 5).
  • You need to implement the code generator (Section 6).
  • You need to represent FSMs visually (Section 7).
  • You need to cover positive and negative test cases as discussed in the spec.

Other requirements

  • Stay as close to the specification as possible. That is, do not change the concrete syntax; implement all constraints exactly as specified; generate the same code, possibly modulo target language and formatting details; do not vary the turnstile example; etc. In case of doubt, please ask.
  • Make good use of your target platform. For instance, you are supposed to pick a parser generator / parser combinator library that is established on your platform. Generally, use libraries and tools, where it makes sense.
  • Add a README.md on the prerequisites for running your code. A simple shell script or build script should be provided to build and test your implementation. Apply software engineering best practices.
  • Please deliver your implementation via a public GitHub repo or bitbucket git repo with access right for Ralf Lämmel (https://bitbucket.org/rlaemmel/) and Andrei Varanovich (https://bitbucket.org/dr.gigabit). Please ask in the lecture, if this is a hardship.

Non-requirements

  • You don't need to represent FSMs exactly as shown in the document. You can use a different visual syntax, as you wish. In this manner, you can use more easily tools and libraries available on your platform.
  • The positive test case for the turnstile example and the negative test cases from the specification are required and sufficient. You don't need to test your implementation more exhaustively.
  • The visual syntax only needs to be supported up to the point for representation of FSMs. If you end up implementing a proper graphical editor, then you are welcome, but you would be going beyond what's required.

Workflow

  • You can team up in teams of 2. (You don't have to.)
  • Claim a platform by sending an email to ed.znelbok-inu|gnaltfos#ed.znelbok-inu|gnaltfos ASAP.
  • You can always reach the lab assistant for help at moc.liamg|ybtentod#moc.liamg|ybtentod.
  • Present a short sketch (with 1+ slides) of your plan in the lab on 5 Dec.
  • Present a short progress report (with 1+ slides) in the lab on 19 Dec.
  • Make your final presentation (with slides and running code) in the lecture on 9 Jan.
  • Submit repo URL incl. README.md and presentation to ed.znelbok-inu|gnaltfos#ed.znelbok-inu|gnaltfos on 9 Jan.

The sketch presentation and the progress report are needed to make sure that you are on the right track and to better calibrate the different teams and efforts. The final presentation is in lecture slot because R. Lämmel will be out of town during the lab slot in the same week.

General logistics

See the course page for deadlines and conditions on successfully completing the assignments.