Skip to content
This repository has been archived by the owner on Mar 31, 2020. It is now read-only.
/ sif-lang Public archive

A Requirements Oriented DSL for design pattern specification.

License

Notifications You must be signed in to change notification settings

jfdm/sif-lang

Repository files navigation

Sif: A DSML for Design Pattern Prototyping

                       ____  _  __       _
                      / ___|(_)/ _|     | |    __ _ _ __   __ _
                      \___ \| | |_ _____| |   / _` | '_ \ / _` |
                       ___) | |  _|_____| |__| (_| | | | | (_| |
                      |____/|_|_|       |_____\__,_|_| |_|\__, |
                                                          |___/

Sif is a DSML for the rapid prototyping of Design Patterns using a requirements oriented modelling language based on the GRL.

Sif is primarily a declarative EDSL implemented in the dependently typed language Idris. Users are free to use the EDSL and Idris tooling to construct pattern prototypes. Sif itself leverages Idris’s environment for variable handling.

A simple DSL is also provided that allows for pattern prototypes to be described in isolation away from Idris so they can be checked using the model checker. This DSL has a very limited concept of an environment.

Sif is also packaged with a frontend that allows modellers to design their own pattern prelude and replace the default library with their own. The Sif frontend is a modal interface to a pattern library that allows for:

  1. Viewing pattern prototypes.
  2. Converting pattern prototypes to various output formats.
  3. Pattern prototype evaluation.
  4. Syntax checking of externally defined prototypes.

About

A Requirements Oriented DSL for design pattern specification.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages