From: mjordan@src.dec.com (Mick Jordan)
Subject: Re: Speaking of m3tk  (was: Re: Extracting the subtype relation)
Organization: DEC Systems Research Center
Date: Fri, 6 Nov 92 00:54:07 GMT

In article <43060@imag.imag.fr>, chevalet@imag.fr (Chevallet Jean-Pierre) writes:

|> Just want to know, what is M3TK ?
|> 

Here is a copy of the last posting announcing M3TK, modified to refer to
the latest release distribution available from gatekeeper. A new
version is in test and will be released at the same time as the
next SRC distribution.

-----------------------------------------------------------------------------

Version 2 of the Modula-3 AST toolkit, a development of the otherwise defunct
Olivetti Modula-3 implemention, is now available via ftp from
gatekeeper.dec.com.  There are no substantial changes from version 1, other
than the implementation of the "twelve changes" to the language definition.
That is, the toolkit supports the language defined in "Systems Programming with
Modula-3", and is compatible with the conventions of the SRC Modula-3
implementation. The documentation on the toolkit components has been improved,
particularly that for the AST specification.

The system is made available under the same licence terms as the SRC compiler.
In addition the original Olivetti sources are covered by a separate,
non-restrictive, copyright notice.

The toolkit is designed to support the creation of Modula-3 program
development tools and is structured around a compiler front-end 
which uses a public Abstract Syntax Tree (AST) to represent program
source. A description of the (original) system can be found in:

  "An Extensible Programming Environment for Modula-3", Mick Jordan,
  Proceedings of the Fourth ACM SIGSOFT Symposium on Software Development
  Environments, Software Engineering Notes, 15, 6, Dec 1990.

A number of tools are provided with the toolkit, vis:

  * (m3check) A tool that is a step towards an integrated, incremental 
    program development environment for Modula-3. It includes a compiler
    front end, a tool to scan the file system for source file changes
    and recompile changed (and dependent) units, a pre-linker to analyse
    a program for completeness, and a primitive browser. I have reworked
    this tool quite a bit in repsonse to user feedback. On a DECstation 5000,
    if compiled with optimisation, it compiles at about 500 lines a second
    and, since it caches interfaces and is interactive, can provide
    a fast turnround syntax/semantic checker, before invoking "m3make".

  * (m3fe) (Just a) compiler front-end (syntax/semantic analysis), with 
    optional checks for unused variables, uncaught exceptions, etc. The 
    compiler can compile multiple sources in one invocation and compiles each
    interface once only.

  * (m3modgen) A tool to generate skeleton modules from interfaces.

  * (m3seegen) A tool to generate a textual form of a generic 
    instantiation, with optional substitution of the generic formals
    by the actuals.

The toolkit is designed to be extensible, by virtue of the AST
and a collection of reusable compiler components. I expect to add more
tools over time, and hope that others will be motivated to do so. 

** N.B. You must install version 2.06 (or later) of SRC Modula-3 before
** attempting to build the toolkit.

The toolkit is stored in the directory /pub/DEC/Modula-3/release in the
file m3tk-2.07.tar.Z.  It is built in the same manner as other Modula-3
distributions, e.g. "m3make -f m3makefile.m3tk", assuming that you
have already installed SRC Modula-3 (2.06 or later). You will get plenty of 
warning messages, but these are all harmless.

Mick Jordan, Apr 24 1992.

Newsgroups: comp.lang.modula3