/skalpel

A type error slicer for Standard ML

Primary LanguageStandard MLGNU General Public License v3.0GPL-3.0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; This file is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.
;;
;; Copyright 2009, 2010, 2011 Steven Shiells
;; Copyright 2013 Heriot Watt University
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


The type error slicer for SML is developed by the ULTRA group of
Heriot-Watt University, Edinburgh.

Traditional type error messages given for SML can be hard to decipher
and often indicate incomplete and unprecise locations as the source of
the programming error.  The error messages produced are also biased
because they report only one location which is dependent on the way
which the abstract syntax tree is traversed.

The type error slicing tool - Skalpel - aims to eliminate these
problems.  The error messages produced by the type error slicer offer
textual explanations of the errors and highlights all and
only those program points which contribute to the error.

A short description of the folders in this directory are:

analysis-engines/

   Contains the source code to the Skalpel tool which takes Standard
   ML programs as input and outputs "type error slices" to the user
   (see the user guide for a description of a "type error slice").

documentation/

   Contains documentation, including info pages, man pages, and the
   full user guide.

front-ends/

   Source code for our Emacs front end, and the terminal window.
   front-end.

lib/

   Contains our definition of a 'basis' file which declares
   definitions Skalpel may use in certain errors in order to explain
   where certain types come from (such as int).

package/ (in git repository only)

   Contains scripts and other necessary information to build packages
   (.deb, .rpm, etc) for Skalpel.

testing/

   Contains files to test the analysis engine and other testing tools.

Unsure where to start? Take a look at the full user guide in the
documentation folder, this explains installation and use of the
various pieces that make up Skalpel.