ultra-group / skalpel

A type error slicer for Standard ML
GNU General Public License v3.0
10 stars 1 forks source link

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