# $Id: ROADMAP,v 1.1 1996/08/29 16:59:25 queinnec Exp $


        This is the roadmap of the TOP directory.

This directory contains many things which might not interest you if you
are limited to DMeroon or Icslas. Code for bytecompilation, compilation
to C or Java etc. is present. 

Analyze/
        This directory contains some of the analyzes that are performed
        on the objectified tree (the object-oriented intermediate form
        of a Scheme program). These are:
        
Analyze/alphat.scm  
                alphatize local variables so they all have different names 

Analyze/box.scm 
                introduces boxes instead of assignments

Analyze/collqut.scm
                gathers quotations at top-level

Analyze/colltemp.scm
                gathers local variables at top-level

Analyze/extract.scm
                gathers local functions at top-level

Analyze/inian.scm
                determine whether variables are initialized

Analyze/lift.scm
                computation of closed variables

Analyze/quotes.scm
                linearize quotations

Analyze/rename.scm
                rename variable explicitly
        
Analyze/walk.scm
                the meta walker for all analyzes and transformations.

Archive/
        Various files that are no longer necessary. Only kept in case if...
        Normally this directory does not appear in official releases.

Ast/
        stands for "Abtract Syntax Tree". This directory contains code to
        convert an Sexpression into an AST ie an object. It performs all
        syntactic verifications. 
        
Ast/Test/
                To check that the conversion into an ast is reasonable,
                we can verify that the 'evaluation' of the AST produces 
                what was expected from the Sexpression.
        
Ast/Test/qdeval.scm
                        A Quick and Dirty evaluator of AST. This is a 
                        simple generic functions over the classes of the 
                        AST.

Ast/check.scm
                Check syntax of all Scheme special forms

Ast/objify.scm
                build the AST

Ast/predenv.scm
                Utilities to manage the predefined lexical (global or local) 
                environment.

Ast/progr.scm
                The classes of the AST


Bigloo/
        This is the directory where Bigloo-related stuff is some of them
        are required by DMeroon, others are needed to interpret or compile 
        the various compilers.

Bigloo/dm.bgl
                This is the Bigloo module that combines a Bigloo interpreter
                with DMeroon. 

Bigloo/dmbgl.[ch]
                These are the C glue required to adapt DMeroon to Bigloo.

Bigloo/dmports.ch]
                This file supersedes one of the file of the Bigloo 
                distribution and allows Bigloo to serve DMeroon requests
                while blocked reading a stream.

Bigloo/sig2bgl.scm
                Converts signatures of DMeroon primitives into some
                Scheme code or Bigloo directives to glue DMeroon and Bigloo
                altogether. The result is used by dm.bgl.

Bigloo/macbgl.scm
                Defines how to define macros in Bigloo. It also defines
                the 'monitor' macro to control the errors that may arrive
                during the evaluation of a form.

Bigloo/rtbgl.scm
                Defines the runtime part of the 'monitor' macro as well as
                some other functions or variables for Bigloo.

Bigloo/tstdrvr.scm
                Defines how to run a suite of tests in Bigloo.


Bind/
        This directory contains code to allow the various sub-parts of
        Icslas to run on a variety of Scheme implementation. 

Bootstrap/
        This directory contains 

Bootstrap/dm2ch.scm
                This is a compiler that compiles Sexpressions (in the spirit
                of Meroon) that describes the predefined classes of DMeroon
                into static C code. This allows the C sources of DMeroon
                to make use of the equivalent C structs. 

ByteCode/
        This directory defines a ByteCode machine. It 

ByteCode/BC2dm.scm
                This convert a bytecoded module into a DMeroon object.
                This requires DMeroon to be present of course.

ByteCode/BCappl.scm
                Allows to read and store bytecoded modules into/from files.

ByteCode/BCcode.scm
                The instructions of the bytecode machine.

ByteCode/BCdrive.scm
                The galley file for the bytecode compiler.

ByteCode/BCenv.scm
                The predefined environment for the bytecode machine
                simulated in Scheme.

ByteCode/BCgen.scm
                The bytecode generator ie the backend of the compiler.

ByteCode/BCinst.scm
                A simulation in Scheme of the Bytecode machine.

ByteCode/BCobj.scm
                The classes and objects needed by the Scheme simulation of the
                ByteCode machine.

ByteCode/BCpred.scm
                The predefined environment for the bytecoded Scheme.

ByteCode/BCtest.scm
                Testing the bytecode compiler with the simulated bytecode
                machine in Scheme.

ByteCode/Test/

ByteCode/ctest.scm
                Testing the bytecode compiler with the C bytecode interpreter.

ByteCode/c/
                The ByteCode interpreter written in C and the predefined
                Scheme primitive library written in C. This directory also
                contains the glue between the Bytecode interpreter and
                DMeroon.

ByteCode/mkcmod.scm
                a file that compiles a Bytecoded module into static C
                so that it can be tested with the C bytecode interpreter.

ByteCode/mkcodop.scm
                a compiler that generates the xlacodop.[ch] files that 
                defines the Bytecode operations: their arity and name.
                This is useful when tracing the activity of the Bytecode
                machine.

C/
        This directory defines how to use DMeroon from the C language.

C/dmc.[ch]
                This is the glue between DMeroon (and Boehm's GC) and DMeroon.
        
C/server.[ch]
                This defines a DMeroon server.

Cgen/
        This directory defines the C backend of the Scheme compiler.

Cgen/Ccomp.scm
                This defines how to compile a Scheme file into a .o file.

Cgen/Cdynqu.scm
                Linearizes quotations into dynamic reconstruction code
                (rather than static code. This is needed if separately
                compiling Scheme modules).

Cgen/Cenv.scm
                The definition of the predefined Scheme environment 
                offered by the C (hand-written) runtime library.

Cgen/Cgen.scm
                The backend generating C code.

Cgen/Ctest.scm
                Testing the Scheme to C compiler.

ChangeLog
        This file gathers some hints on the story of these files.

Commands/
        This directory contains various shell or Perl scripts.

Commands/cxla
        This script allows to start and configure the Icslas multisystem.
        It allows to choose the Scheme implementation and the goal
        (compile to C, Java, Bytecode ...).

DMeroon/
        This directory defines the language-indepent DMeroon library.

DMeroon/c/
                This directory contains DMeroon sources.
                
DMeroon/c/HINTS
                        Gathers the characteristics of C types as implemented
                        by various platforms (alpha, sparc, *86 ...)

DMeroon/c/ROADMAP
                        A few words on the files of this directory. This
                        file may be turned into an html page with the
                        TOP/Commands/autodoc.prl utility.

DMeroon/c/TESTRUN
                        Temporary file for cut-and-paste expressions for tests.

DMeroon/c/*.[ch] 
                        See local ROADMAP

DMeroon/Commands/
                This directory contains shell or Perl scripts to rebuild or
                run DMeroon, to send scripts to DMeroon servers, to print
                statistics on the usage of DMeroon servers...

DMeroon/Doc/
                Various documentation on DMeroon and mainly

DMeroon/Doc/api.txt
                        DMeroon API for C.

DMeroon/Doc/apiscm.txt
                        DMeroon API for Scheme.

DMeroon/Doc/psls.ps
                        The first paper on DMeroon (in English).

DMeroon/Doc/mpr.ps
                        A shortened version (in French).

DMeroon/Doc/BIND.txt
                        Some notes describing how to bind DMeroon to a 
                        language.

DMeroon/Test/
                This directory contains various suites of tests in Scheme
                to check various aspects of DMeroon.

DMeroon/urls/
                This directory contains URLscripts to test DMeroon servers.

DMeroon/*.scm
                Probably obsolete.

Doc/
        Will contain documentation on Icslas.

FUTURE
        Things to do...

Guile/
        Will contain DMeroon adaptation for Guile.

HISTORY
        Icslas sources were snarfed from previous studies, books, papers...
        This file reminds me of their origins.

Imakefile
        The standard Imakefile to regenerate Icslas, DMeroon ...
        This Imakefile may be used as a standard Makefile (in official
        releases). 

Java/
        Will contain the Java backend for the Scheme compiler.

Library/
        Scheme code defining the standard r4rs library.

Macros/
        This directory defines some macroexpansion engines: an EPS-like
        and a traditional one.

Macros/clexpand.scm
                A traditional (Common-Lisp like) macro-expansion engine.

Macros/clmacros.scm
                The definition of the usual Scheme macros (ie syntax).

Macros/expand.scm
                an EPS macro-expansion engine and accompanying Scheme syntax.

Macros/wmw.scm
                ?

OScheme/
        The glue needed by OScheme for DMeroon. Also contains what is 
        required to run Icslas.

OScheme/dmoscheme.[ch]
                The C glue for DMeroon.

OScheme/sig2osc.scm
                The compiler of DMeroon signatures into C or OScheme code.

OScheme/macosc.scm
                How to define macros in OScheme as well as the 'monitor'
                macro.

OScheme/rtosc.scm
                The runtime part of the 'monitor' macro and some other
                useful functions.

Others/
        This directory contains various utilities from the Scheme repository.

Others/format.scm
Others/pp.scm
                a format and prettyprinter utilities (by Marc Feeley).
        
Others/tester.scm
                A test suite evaluator.

Pico/
        The glue needed by Pico (the Scheme implementation of Luc Moreau)
        for DMeroon.

Pico/dmpico.[ch]
                the C glue for DMeroon.

Pico/sig2pico.scm
                the compiler of DMeroon signatures into C or Pico code.

README
        The general README of the whole Icslas directory.

README.DMeroon
        A temporary README for DMeroon only.

REGENERATION
        Personal notes on how to regenerate DMeroon on various machines
        and systems.

ROADMAP
        This current file.

RUN
        Cut-and-paste expressions to test Icslas.

Ramses/
        This directory contains an approximation of the Ramses system
        (by Alexandre Frey) that analyzes Scheme modules and rewrite them
        into Scheme code without macros and with renamed global variables.

Ramses/derstand.scm
                The engine.

Ramses/r4rsenv.scm
                The definition of the standard r4rs environment

STk/
        Will contain the glue needed by STk for DMeroon.

Scheme2C/
        Will contain the glue needd by Scheme2C for DMeroon.

Test/
        Test suites for Icslas.

Tmp/
        Obsolete things ???

TreeCode/
        This directory defines a backend of the Scheme compiler into 
        TreeCode expression.

XXX/
        This directory contains the generic binding between DMeroon and
        an arbitrary XXX language. Associated documentation exists in
        DMeroon/Doc/BIND.txt

XXX/dmxxx.[ch]
                Generic code to glue DMeroon with the XXX language.

XXX/xxx.mkf
                The Imakefile to regenerate DMeroon for the XXX language.
        
c/
        The Scheme runtime libraries written in C. 

c/scheme.[ch]
                The basic common library.

c/schemelib.c
                Other primitive Scheme functions in direct style.

c/schemeklib.c
                Other primitive Scheme functions in CPS style.

config/
        This directory contains the language-dependent Imakefiles to 
        regenerate DMeroon (or Icslas). For any language XXX to which DMeroon
        is bound, there exists a XXX.mkf Imakefile.

icslas.scm
        This file allows to launch Icslas. It implements the complex
        conditionalization of all these files. Some predefined configurations
        may be started by the Commands/cxla command. 

o/
        This directory contains compilation products. It contains 
        subdirectories proper to machines and Operating systems and
        subsubdirectories proper to languages to which DMeroon is bound.        
        
# end of ROADMAP.
