Program transformations play an important role in domain-specific languages and model-driven development. Tracing the execution of such transformations has well-known benefits for debugging, visualization and error reporting. In this paper we introduce string origins as a lightweight, generic and portable technique to establish a tracing relation between the textual fragments in the input and output of a program transformation. We discuss the semantics and the implementation of string origins using the Rascal meta programming language as an example. Furthermore, we illustrate the utility of string origins by presenting data structures and operations for tracing generated code, implementing protected regions, performing name resolution, and fixing inadvertent name capture in generated code.
origin tracking, model transformation, traceability
Design Tools and Techniques (acm D.2.2), Processors (acm D.3.4)
Software (theme 1)
Unspecified
Next Generation Auditing: Data- Assurance as a serivce
International Conference on Theory and Practice of Model Transformations
Software Analysis and Transformation

Inostroza Valdera, P.A, van der Storm, T, & Erdweg, S. (2014). Tracing program transformations with string origins.