Subversion Repositories tendra.SVN

Rev

Blame | Last modification | View Log | RSS feed

Components
==========

This document describes the various libraries, modules and tools which
are proposed to exist after the restructuring described by the
./outlineplan document.


Libraries
---------

After restructuring, we will be set to design APIs for two publicly-
available libraries:

 libTenDRA  The TenDRA compiler proper, providing an API interface.

            This should not be aware of how each producer and
            installer is implemented.

            The current tools (tcc, tnc, tld et al) then become simply
            CLIs to this library - essentially as they are currently,
            but with a formal interface instead of ad-hoc.

 libANDF    This is a point of confusion. libANDF is to be an API to
            manipulate ANDF (in much the same way as DOM and SAX
            manipulate XML).

            This was origionally to be called libTDF; unrelated to
            the original libTDF, which is a support library that is
            not visible to the user.

            This library is to be used by anything that accesses TDF.
            This includes the CLI tools (disp, tnc and such), the
            producers, and installers.


These libraries should not execute external programs, to avoid
configurations per-platform.

Both of these libraries are to be formed of existing code, with a new
publically acessible API specified to access them.


Modules
-------

The following modules will hook into libTenDRA:

 Installers Output from TDF to each machine's instructions.

 Producers  Parsing from input languages to TDF.

Each Installer and Producer is a dynamically-linked module, loaded at
runtime. These use libANDF for inputing or outputting TDF data.


Tools
-----

The following command-line interfaces are user-facing programs, which
may be used separately from the TenDRA project:

 disp       TDF pretty-printer.

 tcc        An interface to libTenDRA, capable of loading various
            producer and installer modules.

 tld        The TDF Linker.

 tnc        The TDF Notation Compiler (An unstructured TDF assembler
            and disassembler).

 tpl        The PL_TDF Compiler (a structured TDF assembler).

 lexi       A lexical generator.

 sid        Syntax Improving Device: a parser generator.

 calculus   An algebraic type system tool.


Utilities
---------

The following command-line interfaces are developer-facing programs,
which are specific to development of the TenDRA project:

 tspec      An API specification generation tool.

 make_err   A tool to manage the producer's error catalogues.

 make_tdf   A tool to generate TDF encoding and decoding routines.

            This is for libANDF, and, confusingly, uses the old lib/tdf.


A transition from the previous directory structure to the new layout
required for these components is described in the ./restructure
document.