Login | Register
My pages Projects Community openCollabNet

Project home

If you were registered and logged in, you could join this project.

Message from the owner(s)

Trane is recently suspended due to some time and technical constraints. I have not given up yet ;-)
Summary a library to support experimenting with transformations
Categories libraries, construction, process
License Other OSI-certified license
Owner(s) wlohmann

Trane is a small class library, which provides an infrastructure to support experimenting with transformations interactively. Transformations here mean algorithms, which take software artefacts as input and output manipulated artefacts. Trane supports combination of transformations available in different languages, libraries and tools. Several combinations can be presented at the same time, parameters can be visually changed, and results can be compared. New transformations can be added easily.

Though it is not restricted to that, we want to use Trane especially for transformations on language artefacts, such as grammars, semantic descriptions, language processors possibly generated from those grammars. Transformations will be mainly in the area of source to source transformation, such as refactoring. The general idea is similar to graphics filter pipelines, such as Cantata (Khoros), or allseeingi (hosted here). The new aspect is the use of software as data, especially the use of grammars.

The current state is a first prototype, which enables combination of transformations, but lacks of usability and a good type system. Moreover, certain keyconcepts from the scratch pad are not yet implemented. (See some Screenshots). This project is not thought as a high-quality production tool, though it might become usable (we hope). Rather, it is subject to research, and concepts might stand in main focus, which might be the draft for a larger real life project with more helpers. Maybe they would then include our project team for experience and suggestions.

Implementation is based on .NET (Mono as well as the other) and Gtk#. A published paper on Trane is available and will be referenced here, soon, despite possible errors in it ;-)


What is the goal of this project?

Though language technology is about 50 years old, there is still insufficient support for engineering language artefacts, such as grammars. There are several tools available, which are focussed to some domain or are restricted to a special format or tool.
This project aims to provide a facility to combine those tools, and to play around with them, compare transformations defined on e.g. grammars, provide converters between grammar formats.

What is the scope of this project?

  • This is a project used to support research on source-to-source transformations.
  • It already provides basic functionality to define and combine heterogeneous transformations interactively, which are defined by e.g. web-services, cmd-line, foreign libraries. Integration of different kinds of transformation should be improved even more.
  • We want to provide an infrastructure and a basic set of examples/ usable transformations and format converters, which other users might want to apply to own projects.
  • The implementation aims to stay lightweight.

What are high-level features you are sure to build?

  • Support for easy integration of heterogenous transformations, especially in the area of grammar engineering
  • Support for interactive experiments with transformations

What are the high-level assumptions or ground rules for the project?

We use .NET 2.0, on Windows and Linux
  • C# for the core
  • arbitrary .NET languages for transformations
  • arbitrary .NET languages and Webservices for wrapping existing transformations into our model
  • Will be artistic license

Related resources

  • The underlying concept has already been used in a lot of programs, especially in the field of graphics (Cantata in the Khoros system, MVE2, allseeingi (hosted here))
  • This implementation aims for software as data, especially language artefacts, which has not been object in such tools before.
  • This implementation tries to remain very lightweight, making it easier to understand and integrate with other tools, or useful for own experiments.

Project members

  • wlohmann - Wolfgang Lohmann
  • ThomasZ -