Please consider providing a means of easily testing your tool, e.g., via online access or via a virtual machine hosted on SHARE. You can find here a brief workflow description for preparing a virtual machine in SHARE.
bx via graph transformations
- eMoflon: A meta-CASE tool for metamodelling, unidirectional model transformation via programmed graph transformations, and bidirectional model transformation via triple graph grammars.
- MoTE: An incremental bi-directional model transformation tool based on Triple Graph Grammars.
bx via bidirectionalization
- Semantic Bidirectionalization (after POPL'09 paper: "Bidirectionalization for free!", more complete coverage than below)
- (Combining) Syntactic and Semantic Bidirectionalization (after ICFP’07 paper: "Bidirectionalization transformation based on automatic derivation of view complement functions", POPL'09 paper: "Bidirectionalization for free!", and ICFP'10 paper: "Combining syntactic and semantic bidirectionalization")
bx via combinators
- BiGUL: A minimalist putback-based bidirectional programming language embedded in Haskell.
- BiYacc: Unifying parsing and "reflective" printing. A tool designed to ease the work of writing parsers and printers.
bx via delta / update propagations
- Beanbag: A language for fixing inconsistency automatically
bx via model finding / constraint solving
- Echo is a tool for model repair and transformation based on the Alloy model finder, with support for bidirectional model transformations. It is able to both check and recover, through minimal updates, both intra- and inter-model consistency, and is built over the Eclipse Modeling Framework (EMF). Echo is meta-model independent, being able to process any meta-model specified in ECore and its respective instances in XMI. Additional constraints, as well as operations, are specified by embedding OCL in annotations, as prescribed by EMF. Inter-model consistency is specified by the QVT Relations (QVT-R) transformation language.
- FunnyQT: A Clojure model querying and transformation library providing several embedded DSLs for different tasks. BX is supported via the namespace funnyqt.bidi in conjunction with the funnyqt.relational namespace. Some example BXs here (partly very contrieved for larger test coverage) and here.
- JTL: Janus Transformation Language (JTL) is a model transformation language specifically tailored to support bidirectionality and change propagation. Its relational semantics relies on Answer Set Programming (ASP): given a change to one source, JTL uses the DLV constraint solver to find a consistent choice for the other source. In particular, when the transformation in non-deterministic, and there might be multiple choices, the JTL model transformation engine restores consistency by returning all admissible models.