README 2.04 KB
Newer Older
david_v's avatar
david_v committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Transformers						-*- text -*-
------------

C++ parsing tool bundle for Stratego/XT.


Authors
-------
Robert Anisko  <robert@lrde.epita.fr>
Valentin David  <valentin@lrde.epita.fr>
Nicolas Desprès  <nicolas.depres@lrde.epita.fr>
Akim Demaille  <akim@epita.fr>
Olivier Gournet  <olivier.gournet@lrde.epita.fr>
Quôc Peyrot  <chojin@lrde.epita.fr>
Nicolas Pouillard  <pouill_n@lrde.epita.fr>
Julien Roussel  <julien.roussel@lrde.epita.fr>
Nicolas Tisserand  <tisser_n@lrde.epita.fr>
Clément Vasseur  <vasseu_c@lrde.epita.fr>

Overview
--------

Thanks to the keyword template, and  almost by accident, C++ is a very
special language where one can not only specify what a program will do
once compiled, but  in addition one can specify  how the compiler will
compile  a program. This  feature gave  birth to  powerful programming
techniques,  commonly referred to  as ``metaprogramming''.  Because of
its  committment in  the Olena  and Vaucanson  projects, the  LRDE has
developped    expertize   in   metaprogramming.    Unfortunately   the
implementation is tricky and very error-prone.

Starting  from   the  simple  idea  that   ``we  want  metaprogramming
efficiency, but we don't want  to write it'', the Transformers project
was  initiated.   It  aims  at  converting  naive   (but  decent)  C++
programming into  high-speed (but indecent)  C++ source code.  To this
end,  several  tasks must  be  addressed:  basically the  Transformers
project aims at designing a set of tools to manipulate C++ programs.

The  software  we   use  to  build  those  tools   comes  mainly  from
Stratego/XT.

Its main goal  is to ease the use of  static C++ programming patterns,
such as the  ones which are currently in use in  Olena or Vaucanson by
letting  the programmer use  classical (human  readable) C++  code and
transform it into efficient generic code.

There are several steps to go before we have a usable tool.

Requirements
------------

StrategoXT 0.9.5  or above (http://www.stratego-language.org/)

Installation
------------

$ ./configure --with-xt=<PATH>
$ make
$ make install