![]() | Name | Last modified | Size | Description |
---|---|---|---|---|
![]() | Parent Directory | - | ||
![]() | Abstractor/ | 2005-09-04 00:55 | - | |
![]() | COPYING | 1998-10-14 17:48 | 18K | |
![]() | Elaborator/ | 2005-09-04 00:55 | - | |
![]() | Lexer/ | 2005-09-04 00:55 | - | |
![]() | Linker/ | 2005-09-04 00:55 | - | |
![]() | Parser/ | 2005-09-04 00:55 | - | |
![]() | README.cockney | 1998-10-14 17:48 | 5.1K | |
![]() | README.english | 1998-10-14 17:48 | 4.9K | |
![]() | README.html | 2011-01-23 19:15 | 5.9K | |
![]() | SemanticObjects/ | 2005-09-04 00:55 | - | |
![]() | Test/ | 2005-09-04 00:55 | - | |
![]() | build.sml | 1998-10-14 17:48 | 3.8K | |
![]() | dij-sml-eml_1.1-2.tar.gz | 1998-10-14 17:48 | 57K | |
![]() | dij/ | 2005-09-04 00:55 | - | |
![]() | sources.cm | 1998-10-14 17:48 | 3.1K | |
![]() | ver.EML.build.sml | 1998-10-14 17:48 | 4.8K | |
![]() | ver.EML/ | 2005-08-08 18:09 | - | |
The (dis)similarity of the implemented language to the one described in the book, can be estimated on the basis of examples contained in dij/ directory, the syntax described in Abstractor/ABSTRACT_GRAMMAR.sml file, and the denotational semantics residing in Elaborator/ directory.
Any decision of not keeping with the spirit of the original, in the design of the semantics, was heavily thought of:
This project started in early 1994, after lectures about denotational semantics by Michal Grabowski and labs about implementing denotational semantics in Standard ML with Grzegorz Grudzinski (hi Grzes!). In these times, the author of the interpreter still had hopes, that imperative languages can be beautiful, and imperative programming - not error-provoking. To instantiate the hopes, or drop them once and for all, he decided to try to make a clean, mathematically beautiful, executable denotational definition of the most beautiful imperative language, possessing the most natural and the safest, bug-eliminating variable scoping mechanisms - the Dijkstra's language.
Any conclusions of this project are left, for an intrepid reader of SML sources, to draw :). Nevertheless, the fact is, that I'm quite satisfied with this work, done with the use of functional and specification languages. Also, this was quite thrilling to write, or even only rewrite, some sample programs in imperative language, after so many years ...
The interpreter was written in a functional programming language Standard ML to run on SML/NJ 109+. Versions 0.93-108 all crash in three places :-P.
The
Lexer was written as a case study of developing software in
Extended ML
to run on
EML Kit.
File ver.EML.build.sml
builds the EML version of the interpreter.
Here is the
root of the source tree.
The .tar.gz
archive of the tree is available by WWW from
http://www.mimuw.edu.pl/~mikon/Dijkstra/dij-sml-eml_1.1-2.tar.gz
or by ftp from
ftp://www.mimuw.edu.pl/pub/mikon/Dijkstra/dij-sml-eml_1.1-2.tar.gz
.
Copyright (C) 1994-1997 Mikolaj Konarski
http://www.mimuw.edu.pl/~mikon/index.html
mikon@mimuw.edu.pl
This program 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 2 of the License, or (at your option) any later version.
This program 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.