Implementing term rewrite languages in DACTL (original) (raw)
Related papers
Towards an intermediate language based on Graph Rewriting
Lecture Notes in Computer Science
Lean is an experimental language for specifying computations in terms of graph rewriting. It is based on an alternative to Term Rewriting Systems (TRS) in which the terms are replaced by graphs. Such a Graph Rewriting System (GRS) consists of a set of graph rewrite rules which specify how a graph may be rewritten. Besides supporting functional programming, Lean also describes imperative constructs and allows the manipulation of cyclic graphs. Programs may exhibit non-determinism as well as parallelism. In particular, Lean can serve as an intermediate language between declarative languages and machine architectures, both sequential and parallel.
Clean—a language for functional graph rewriting
Functional Programming Languages and Computer Architecture, 1987
Clean is an experimental language for specifying functional computations in terms of graph rewriting. It is based on an extension of Term Rewriting Systems (TRS) in which the terms are replaced by graphs. Such a Graph Rewriting System (GRS) consists of a, possibly cyclic, directed graph, called the data graph and graph rewrite rules which specify how this data graph may be rewritten. Clean is designed to provide a firm base for functional programming. In particular, Clean is suitable as an intermediate language between ...
Graph rewriting semantics for functional programming languages
1997
The lambda calculus forms without any question* the* theoretical backbone of functional programming languages. For the design and implementation of the lazy functional language Concurrent Clean we have used a related computational model: Term Graph Rewriting Systems (TGRS's). This paper wraps up our main conclusions after 10 years of experience with graph rewriting semantics for functional programming languages.
Linear behaviour of term graph rewriting programs
Proceedings of the 1995 ACM symposium on Applied computing - SAC '95, 1995
et al. ([18]) gives an accurate reflection of contemporary interest in this area. The generalised term graph rewriting computational model is exploited to implement concurrent languages based on Girard's Linear Logic (LL). In particular a fragment of LL is identified which is able to serve as a "process calculus" and on which the design of a number of languages can be based. It is then shown how this fragment can be mapped onto equivalent sets of graph rewriting rules that both preserve the functionality of the LL connectives and also exploit the properties of linearity for efficient implementation on a distributed architecture. Notions such as channels, production and consumption of messages, and N-toN communication between agents, are interpreted in the world of (term) graph rewriting. This work serves two purposes: i) to extend the notion of Term Graph Rewriting as a generalised computational model for the case of linear concurrent languages, and ii) to act as an initial investigation towards a fully linear term graph rewriting model of computation able to be implemented efficiently on distributed architectures.
Parallel term graph rewriting and concurrent logic programs
1993
General term graph rewriting is a powerful computational model, suitable for implementing a wide variety of declarative language paradigms. Here, we address the problems involved in the implementation, on a loosely-coupled architecture, of an intermediate language based on term graph rewriting, DACTL. In general, such problems are severe, so a subset of this language called MONSTR is defined, free from some of the inefficiencies in the original model (such as an excessive necessity for locking). Superficially, much of the expressiveness of the original model is compromised thereby, especially with regard to the implementation of concurrent logic languages. However, transformation techniques that are valid in the context of declarative language translations, and that map fairly general DACTL rule sets to equivalent MONSTR rule sets without endangering the semantics of the former can be defined. These techniques use shared graph nodes that reflect states of computation, and are similar to the logical variable.
Autowrite: A Tool for Term Rewrite Systems and Tree Automata
Electronic Notes in Theoretical Computer Science, 2005
Reduction strategies in rewriting and programming continue to attract attention. As new strategies are discovered and investigated, new results on rewriting and on computation under particular strategies become available. A number of programming languages, e.g., Elan, Maude, *OBJ* and Stratego, and systems, e.g., Clean, Curry, and Haskell, permit the explicit definition or modification of the computational reduction strategy. Research in this field ranges from primarily theoretical questions about reduction strategies to very practical application and implementation issues. There is a need for a deeper understanding of reduction strategies in rewriting and programming, both in theory and practice, since they bridge the gap between unrestricted general rewriting rewriting with particular strategies. Moreover, reduction strategies bridge investigations of operational principles, e.g., graph and term rewriting, narrowing and lambda-calculus, and semantics, e.g., normalization, computation of values, infinitary normalization and head-normalization, with implementations of programming languages. The workshop is the fourth edition in a series of events intended to provide a forum for presenting and discussing cutting-edge ideas and new results, recent developments, research directions and surveys on existing knowledge in this area. The previous WRS editions were:
Dactl: An Experimental Graph Rewriting Language
Journal of Programming Languages, 1997
A generalized computational model based on graph rewriting is presented along with Dactl, an associated compiler target (intermediate) language. An illustration of the capability of graph rewriting to model a variety of computational formalisms is presented by showing how some examples written originally in a number of languages can be described as graph rewriting transformations using Dactl notation. This is followed by a formal presentation of the Dactl model before giving a formal definition of the syntax and semantics of the language. Some implementation issues are also discussed.
Dactl: an experimental graph rewriting
Journal of …, 1997
A generalized computational model based on graph rewriting is presented along with Dactl, an associated compiler target (intermediate) language. An illustration of the capability of graph rewriting to model a variety of computational formalisms is presented by showing how some examples written originally in a number of languages can be described as graph rewriting transformations using Dactl notation. This is followed by a formal presentation of the Dactl model before giving a formal definition of the syntax and semantics of the language. Some implementation issues are also discussed.