Draco System

Program-Transformation.Org: The Program Transformation Wiki
The Draco system was the first to pioneer with DomainSpecificLanguages employing ProgramTransformation for their implementation. The system featured parser and pretty-printer generation and an interactive system for applying transformation rules and refinements to programs.

The DracoUsersManual and JimNeighbors PhD thesis can be found at the website of BayfrontTechnologies: http://www.bayfronttechnologies.com/l01tech.htm

Draco is also discussed in Section 9.8.1 of GenerativeProgrammingBook.


Strategies in Draco

Draco was the first system to support the transformation of high-level domain-specific programs to executable code. The system supported the definition of transformation rules for optimizations and refinements to transform high-level constructs into lower-level ones.

Transformation rules and refinements are identified by means of names. Transformation rules also have an application code that specifies their relative precedence. The application of transformations and refinements to a domain program is controlled by the user through an interactive process. In this process the user has to select domain, instance (region in the abstract syntax tree representing the program), and locale (node in the abstract syntax tree). Transformations can be applied directly to the currently selected locale using APPLY. The system can examine the tree and SUGGEST transformations to apply. Using the TRANSFORM command all transformation rules in a certain range can be applied automatically. The TRANSFORM uses a bottom-up traversal over the tree, applying rules in the provided code range. Rules with higher codes are applied first. In Neighbors PhD thesis there are also descriptions of a top-down traversal and of traversals that apply the best rules first. Refinements can be applied individually using TRY and USE. A certain amount of automation of the process is possible by means of tactics.

-- EelcoVisser - 28 Apr 2001


JimNeighbors' Draco papers were also among the first to describe the notion of DomainEngineering -- see also

  • Section 2.8.3 of GenerativeProgrammingBook.
  • The Draco approach to constructing software from reusable components, IEEE Transactions on Software Engineering SE-10(5):564-574, 1984.

-- ArieVanDeursen - 10 May 2001


CategorySystem | Contributions by EelcoVisser