XTC
Stratego -- Strategies for Program Transformation
XTC --
Transformation Tool Composition
XTC implements the XT component model and provides support for creating
compositions of XT components. The xtc tool is used to register components
in an
XTC repository. For example the command:
> xtc -r /usr/share/StrategoXT/XTC register -t sglr -l /bin -V 3.8
registers version 3.8 of sglr which is installed in /bin in the
XTC
repository located in /usr/share/StrategoXT. The generic Makefile.xt
provided by
AutoXT automatically registers all installed tools with the
package repository.
XTC repositories can be used to find the installation location of a tool
without needing to know all the installation paths. For example, the
following query can be used to find out where sglr is installed:
> xtc -r /usr/share/StrategoXT/XTC query -t sglr
sglr (3.8) : /bin/sglr
An existing repository can be inherited by importing it
> xtc -r /home/user/share/tiger/XTC import /usr/share/StrategoXT/XTC
In addition to the command-line tool for registration and querying of
repositories,
XTC also provides a Stratego API for approaching
XTC
repositories. All that is required to use this API is importing
the xtc-lib module. To use
XTC add the following to your Makefile.am:
bin_PROGRAMS = term-to-dot
SCFLAGS = --main $*
STRINCLUDES = -I $(XTC)/share/xtc
The
XTC API supports easy calling of external Stratego components
and mixing them with internally defined transformations. Here is an
example:
module term-to-dot
imports xtc-lib lib term-to-adot
strategies
term-to-dot =
xtc-io-wrap(term-to-adot-options,
xtc-io-transform(to-adot)
; xtc-transform(!"ast2abox", !["-p", <xtc-find> "Dot-pretty.pp"])
; xtc-transform(!"abox2text")
)
Note that no code is needed to load the repository. Whenever a query is
done (e.g., by xtc-transform to find "ast2abox"), and no repository is
loaded the
XTC repository is loaded.
AutoXT provides support for
XTC by means of a package switch --with-repository
that can be used to indicate the repository in which to register tools.
The default is $prefix/share/$PACKAGE/XTC, i.e., the
XTC file in the package
data directory. In the
StrategoXT distribution the sub-packages inherit the
repository location from the super-package, i.e., all
StrategoXT tools are
registered in $prefix/share/StrategoXT/XTC.
Makefile.xt implements an automake install hook to install all programs,
scripts, and data. Thus it is not necessary to include make rules for
this purpose. The Makefile example above is sufficient to register
tools and data.
--
EelcoVisser - 13 Dec 2002