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.
Additional Metadata
Keywords origin tracking, model transformation, traceability
ACM Design Tools and Techniques (acm D.2.2), Processors (acm D.3.4)
THEME Software (theme 1)
Stakeholder Unspecified
Project Next Generation Auditing: Data- Assurance as a serivce
Conference International Conference on Theory and Practice of Model Transformations
Inostroza Valdera, P.A, van der Storm, T, & Erdweg, S. (2014). Tracing program transformations with string origins.