Results 1 - 10
of
10
Stratego: A Language for Program Transformation based on Rewriting Strategies - System Description of Stratego 0.5
- Rewriting Techniques and Applications (RTA’01), volume 2051 of Lecture Notes in Computer Science
, 2001
"... Introduction Program transformation is used in many areas of software engineering. Examples include compilation, optimization, synthesis, refactoring, migration, normalization and improvement [15]. Rewrite rules are a natural formalism for expressing single program transformations. However, using a ..."
Abstract
-
Cited by 120 (12 self)
- Add to MetaCart
Introduction Program transformation is used in many areas of software engineering. Examples include compilation, optimization, synthesis, refactoring, migration, normalization and improvement [15]. Rewrite rules are a natural formalism for expressing single program transformations. However, using a standard strategy for normalizing a program with a set of rewrite rules is not adequate for implementing program transformation systems. It may be necessary to apply a rule only in some phase of a transformation, to apply rules in some order, or to apply a rule only to part of a program. These restrictions may be necessary to avoid non-termination or to choose a specific path in a non-confluent rewrite system. Stratego is a language for the specification of program transformation systems based on the paradigm of rewriting strategies. It supports the separation of strategies from transformation rules, thus allowing careful control over the application of these rules. As a result of this sepa
Compiling Language Definitions: The ASF+SDF Compiler
, 1999
"... The ASF+SDF Meta-Environment is an interactive language development environment... ..."
Abstract
-
Cited by 33 (5 self)
- Add to MetaCart
The ASF+SDF Meta-Environment is an interactive language development environment...
Warm Fusion in Stratego: A Case Study in Generation of Program Transformation Systems
, 2000
"... Stratego is a domain-specic language for the specication of program transformation systems. The design of Stratego is based on the paradigm of rewriting strategies: user-denable programs in a little language of strategy operators determine where and in what order transformation rules are (automat ..."
Abstract
-
Cited by 22 (13 self)
- Add to MetaCart
Stratego is a domain-specic language for the specication of program transformation systems. The design of Stratego is based on the paradigm of rewriting strategies: user-denable programs in a little language of strategy operators determine where and in what order transformation rules are (automatically) applied to a program. The separation of rules and strategies supports modularity of specications. Stratego also provides generic features for specication of program traversals. In this paper we present a case study of Stratego as applied to a non-trivial problem in program transformation. We demonstrate the use of Stratego in eliminating intermediate data structures from (also known as deforesting) functional programs via the warm fusion algorithm of Launchbury and Sheard. This algorithm has been specied in Stratego and embedded in a fully automatic transformation system for kernel Haskell. The entire system consists of about 2600 lines of specication code, which bre...
Integrating software construction and software deployment
- 11th International Workshop on Software Configuration Management (SCM-11
, 2003
"... Abstract. Classically, software deployment is a process consisting of building the software, packaging it for distribution, and installing it at the target site. This approach has two problems. First, a package must be annotated with dependency information and other meta-data. This to some extent ov ..."
Abstract
-
Cited by 7 (2 self)
- Add to MetaCart
Abstract. Classically, software deployment is a process consisting of building the software, packaging it for distribution, and installing it at the target site. This approach has two problems. First, a package must be annotated with dependency information and other meta-data. This to some extent overlaps with component dependencies used in the build process. Second, the same source system can often be built into an often very large number of variants. The distributor must decide which element(s) of the variant space will be packaged, reducing the flexibility for the receiver of the package. In this paper we show how building and deployment can be integrated into a single formalism. We describe a build manager called Maak that can handle deployment through a sufficiently general module system. Through the sharing of generated files, a source distribution transparently turns into a binary distribution, removing the dichotomy between these two modes of deployment. In addition, the creation and deployment of variants becomes easy through the use of a simple functional language as the build formalism. 1
First-class Rules and Generic Traversal
, 2001
"... In this paper we present a functional language supporting first-class rules and generic traversal. This is achieved by generalizing the pattern matching constructs of standard functional languages. The case construct that ties rules together and prevents their reuse, is replaced by separate, firs ..."
Abstract
-
Cited by 6 (2 self)
- Add to MetaCart
In this paper we present a functional language supporting first-class rules and generic traversal. This is achieved by generalizing the pattern matching constructs of standard functional languages. The case construct that ties rules together and prevents their reuse, is replaced by separate, firstclass, pattern matching rules and a choice combinator that deals with pattern match failure. Generic traversal is achieved through application pattern matching in which a constructor application is generically divided into a prefix and a su#x, thus giving generic access to the subterms of a constructor term. Many highly generic term traversals can be defined in a type-safe way using this feature.
First Class Rules and Generic Traversals for Program Transformation Languages
- Utrecht University
, 2001
"... The subject of this thesis is the construction of programming languages suitable for the implementation of program transformation systems. First class rules and generic traversals are especially useful in such languages. Stratego, a language specifically intended for program transformations, support ..."
Abstract
-
Cited by 3 (2 self)
- Add to MetaCart
The subject of this thesis is the construction of programming languages suitable for the implementation of program transformation systems. First class rules and generic traversals are especially useful in such languages. Stratego, a language specifically intended for program transformations, supports these features, but is untyped and impure. In this thesis we develop a pure non-strict functional language called RhoStratego, incorporating features from Stratego. First class rules are obtained through the equivalent of Stratego's left-biased choice operator. This approach is not only useful to strategic programming, but is also more powerful than existing proposals to extend pattern matching, such as views and pattern guards. Stratego's generic traversal primitives are implemented through a more fundamental mechanism, the application pattern match, whereby constructed values can be deconstructed in a generic and typeable fashion. We present the syntax and semantics of the language, as well as the semantics of a strict variant. Furthermore, we have developed a type system for RhoStratego, which consists of the Hindley-Milner type system extended with rank-2 polymorphism and typing rules to support generic traversals. The type system is powerful enough to allow, and ensure the safety of, type unifying and type preserving generic transformations. We have implemented a type checker that infers all types, except rank-2 types for which annotations must be given. We also discuss the results of the implementation of a compiler for RhoStratego, and in particular how generic traversals and the choice operator can be implemented. Contents 1
The Essence of Strategic Programming An inquiry into trans-paradigmatic genericity
, 2002
"... Strategic programming is an idiom for generic programming where the concept of a strategy plays a central role. A strategy is a generic, dataprocessing action. Strategies are rst-class citizens as witnessed by a combinator style. Two important characteristics of strategies are that they can traverse ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
Strategic programming is an idiom for generic programming where the concept of a strategy plays a central role. A strategy is a generic, dataprocessing action. Strategies are rst-class citizens as witnessed by a combinator style. Two important characteristics of strategies are that they can traverse into compound data, and that they can be customized by type-specic actions. We provide a general denition of strategic programming, and we demonstrate how this idiom can be realized inside several programming language paradigms.
TomML: A Rule Language For Structured Data
"... Abstract. We present the Tom language that extends Java with the purpose of providing high level constructs inspired by the rewriting community. Tom bridges thus the gap between a general purpose language and high level specifications based on rewriting. This approach was motivated by the promotion ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Abstract. We present the Tom language that extends Java with the purpose of providing high level constructs inspired by the rewriting community. Tom bridges thus the gap between a general purpose language and high level specifications based on rewriting. This approach was motivated by the promotion of rule based techniques and their integration in large scale applications. Powerful matching capabilities along with a rich strategy language are among Tom’s strong features that make it easy to use and competitive with respect to other rule based languages. Tom is thus a natural choice for querying and transforming structured data and in particular XML documents [1]. We present here its main XML oriented features and illustrate its use on several examples. 1
Reengineering the Corporation - A Manifesto for IT Evolution
"... We describe the intricate relationship between business processes and the underlying technology in an attempt to demonstrate that business organizations have always been technology driven. That is, the business processes have been tted to the available hardware and software. The technology deter ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
We describe the intricate relationship between business processes and the underlying technology in an attempt to demonstrate that business organizations have always been technology driven. That is, the business processes have been tted to the available hardware and software. The technology determines the way business is conducted. With the advent of the Internet age, business processes will change radically, not because they are purposely reengineered, but because the Internet oers both to companies and customers radically dierent means of fullling their requirements. Thus, new business processes will emerge more or less autonomously, as people discover the opportunities oered to them by the new technology. The technical possibilities of today determine business consciousness. The current state of information and communication technology enables a migration from the information age to the age of immediate answers. After the underlying technology enables the possibilities, the business has the opportunity to align to it. 1
Objects, rules and strategies in ELAN
, 2000
"... This paper gives an introduction to the ELAN rule-based programming language and presents a general approach for prototyping a new language by transformations defined in ELAN. The approach is used to design an extension of ELAN with objects, leading to an expressive programming framework that ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
This paper gives an introduction to the ELAN rule-based programming language and presents a general approach for prototyping a new language by transformations defined in ELAN. The approach is used to design an extension of ELAN with objects, leading to an expressive programming framework that combines the concepts of objects, rules and strategies.

