The work reported here is part of the PROGRES ( PROgrammedGraphRewriting Systems) project. PROGRES is a very high level multi paradigm language for the specification of complex structured data types and their operations. The data structures are modelled as dir cted, attributed,node andedge labelled graphs (diane graphs). The basic programming constructs of PROGRES are graph rewriting rules (productions and tests) and derived relations on nodes (paths and restrictions). These basic operations may be combined to build partly imperative, partly rule based, complex graph transformations by special control structures which regard the nondeterministic nature of graph rewriting rules. PROGRES offers its users a convenient, partly textual, partly graphical concrete syntax and a rich system of consistency checking rules for the underlying calculus of programmed diane-graph rewriting systems. This paper presents the key techniques used for the execution of PROGRES programs. We will discuss a simple approach to control flow backtracking which is done in a conventional imperative programming language by using a certain programming style. Additionally, the semantics of PROGRES demands that we are able to restore arbitrary previous graph states during backtracking. This adds a new quality to the problem of backtracking which is addressed using a nonstandard database management system and its undo / redo mechanism. We believe that the techniques presented here are not specific for the language PROGRES but are useful for the implementation of a whole new family of multiple paradigm languages.
[1]
Yaowei Liu,et al.
btC: A Backtracking Procedural Language
,
1991
.
[2]
Timothy A. Budd.
Blending imperative and relational programming
,
1991,
IEEE Software.
[3]
Manfred Nagl,et al.
Graph-Grammars and Their Application to Computer Science
,
1982,
Lecture Notes in Computer Science.
[4]
Andy Schürr.
PROGRESS: A VHL-Language Based on Graph Grammars
,
1990,
Graph-Grammars and Their Application to Computer Science.
[5]
Andreas Schürr,et al.
Operationales Spezifizieren mit programmierten Graphersetzungssystemen
,
1991
.
[6]
Leon Sterling,et al.
The Art of Prolog
,
1987,
IEEE Expert.
[7]
Andy Schürr,et al.
GRAS, A Management System for Graph-Like Documents
,
1988,
JCDKB.
[8]
Andy Schürr,et al.
Nondeterministic Control Structures for Graph Rewriting Systems
,
1991,
WG.
[9]
Gregor Engels,et al.
A highly integrated tool set for program development support
,
1988,
SIGSMALL '88.