The TL System
The TL System is a collection of functions providing general-purpose support for rewrite-based transformation over elements belonging to a (user-defined) domain language. In the TL System, a domain language is described by a tuple consisting of (1) an EBNF grammar and, (2) a lexical specification of tokens.
The command-line architecture of the TL system has been designed to support the use of TL System functions in specific ways. The command-line architecture consists of three folders: (1) a folder called Bat Commands containing (DOS) dot-bat files can be used at the system-level to create artifacts central to rewrite-based transformation (e.g, a domain-language parser, a pretty-printed version of a target program, etc.), (2) a folder containing domain-specific data, and (3) a folder called TL_System.
The command-line architecture of the TL System has been designed to provide functionality suitable to both domain developers as well as domain clients. By domain developer we mean a person whose activities include:
The command-line architecture of the TL System has been designed to facilitate its integration with a GUI front-end. Our experiences with program transformation suggest that batch-processing as it relates to domain-developement tasks is a key functionality that a GUI should support. The two primary batch-processing activities are: (1) parsing all files (with specified extensions) within a domain-program file hierarchy (e.g., the Java lang library) and (2) transforming all files either parsed or unparsed (with specified extensions) within a folder hierarchy.
Bascinet is a GUI front-end that has been developed for the TL System command-line architecture. Bascient represents the latest incarnation of the HATS GUI (which was the previous IDE that supported TL programming). It is implemented in Java and supports a variety of batch-processing functions.