Graph grammar engineering with PROGRES (original) (raw)
Related papers
Graph grammar engineering: A software specification method
Lecture Notes in Computer Science, 1987
Graphs as conceptual data models are accepted and used in a wide range of different problem areas. Giving some examples we outline common aspects for modeling complex structures by graphs. We present a formal frame-work based on graph grammars to specify graph classes and the corresponding graph manipulations. We show that such a specification can be written in a systematic, engineering-like manner. This is achieved by an extension of the known programmed, attributed graph grammars. Node-set operators are introduced to facilitate graph queries. Concepts like abstraction, decomposition, refinement, parameterization, and integration have been adopted from software engineering to yield a comprehensive specification method. This method has successfully been applied to specify the central data structures in a software development environment project.
Graph transformation for specification and programming
Science of Computer Programming, 1999
The framework of graph transformation combines the potentials and advantages of both, graphs and rules, to a single computational paradigm. In this paper we present some recent developments in applying graph transformation as a rule-based framework for the specification and development of systems, languages, and tools. After reviewing the basic features of graph transformation, we discuss a selection of applications, including the evaluation of functional expressions, the specification of an interactive graphical tool, an example specification for abstract data types, and the definition of a visual database query language. The case studies indicate the need for suitable structuring principles which are independent of a particular graph transformation approach. To this end, we present the concept of a transformation unit, which allows systematic and structured specification and programming based on graph transformation.
Story Diagrams: A New Graph Rewrite Language based on the Unified
Graph grammars and graph grammar based systems improved a lot towards practical usability during the last years. Nevertheless, there are still major problems to overcome in order to attract a broad number of software designers and developers to the usage of graph grammars. Two of the main problems are, (1) that current graph grammar notations are too proprietary and (2) that there exists no seamless integration of graph grammars and common (OO) design and implementation languages like UML and C++ or Java. Story Diagrams are a new graph grammar language that tries to overcome these deficiencies. Story Diagrams adopt main features from Progres, e.g. formal semantics, explicit graph schemes, programmed graph rewriting with parameterized rules, negative, optional and set-valued rule elements. Story diagrams extend the Progres graph model by offering direct support for ordered, sorted, and qualified associations and aggregations as known from the object-oriented data model. Story Diagrams adopt UML class diagrams for the specification of graph schemes, UML activity diagrams for the (graphical) representation of control structures, and UML collaboration diagrams as notation for graph rewriting rules. Story Diagrams are translated to Java classes and methods allowing a seamless integration of object-oriented and graph grammar specified system parts. This code does NOT rely on an additional huge library like the GRAS database.
Visual Programming with Graph Rewriting Systems
Visual Languages/Human-Centric Computing Languages and Environments, 1995
The multi-paradigm language PROGRES is the first rule-ori- ented visual language which has a well-defined type concept and supports programming with graph rewriting systems. To some extent, it has the flavor of a visual database program- ming language with powerful pattern matching and replac- ing facilities as well as backtracking capabilities. Until now, it was mainly used for specifying and
Model Based Software Engineering, Graph Grammars and Graph Transformations
2004
The evolution of programming languages shows a clear direction towards higher levels of abstraction. This evolution started from assembly languages, went on to procedural languages, then to object oriented languages and now the state of the art is component oriented languages and frameworks. In the same timeframe top down approaches classified as Model Based Software Engineering [6] attempted to bridge large semantic gaps between very-high-level semantic models and programming languages, and failed.
Visual Software Development Environment Based on Graph Grammars
IEICE Transactions on Information and Systems, 2009
In software design and development, program diagrams are often used for good visualization. Many kinds of program diagrams have been proposed and used. To process such diagrams automatically and efficiently, the program diagram structure needs to be formalized. We aim to construct a diagram processing system with an efficient parser for our program diagram Hichart. In this paper, we give a precedence graph grammar for Hichart that can parse in linear time. We also describe a parsing method and processing system incorporating the Hichart graphical editor that is based on the precedence graph grammar.
Rule-based transformation of graph rewriting rules: Towards higher-order graph grammars
Theoretical Computer Science, 2015
Higher-order functions-the ones which manipulate other functions-have a fundamental role in Computer Science, specially in areas such as functional programming and theory of computation. Graph transformation-the rule-based modification of graphs-is also an important approach used in many contexts, as for instance, the definition of syntax and semantics of visual languages and the modelling and analysis of concurrent and non-deterministic systems. Although the algebraic double-pushout (DPO) approach to graph transformation has a vast theory, it does not present a notion of higher-order transformation, i.e., transformation of graph rewriting rules themselves. Higher-order would be required, for instance, to ease the modelling of dynamic systems through graph transformation systems, and to describe model transformations that modify graph rewriting rules. The main contribution of this work is a notion of double-pushout transformation for graph rewriting rules, where the result of the rewriting is a valid graph rule. We use DPO diagrams in the category of graph spans to describe rule transformations, and negative application conditions (NACs) in the second-order rules to enforce preservation of the rule structure. We define a model named second-order graph grammars, capable of first-and secondorder derivations. Finally, we discuss alternative ways of defining second-order transformations.
Implementation of the imperative/rule based language PROGRES
1992
The work reported here is part of the PROGRES (PROgrammed Graph Rewriting 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 directed, attributed, node and edge 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...
Improving the graph grammar parser of Rekers and Schürr
IET Software, 2011
Graph grammars and graph grammar parsers are to visual languages what string grammars and parsers are to textual languages. A graph grammar specifies a set of valid graphs and can thus be used to formalise the syntax of a visual language. A graph grammar parser is a tool for recognising valid programs in such a formally defined visual language. A parser for context-sensitive graph grammars, which have proved to be suitable for formalising real-world visual languages, was developed by Rekers and Schürr. We propose three improvements of this parser. One of them enlarges the class of parsable graph grammars, while the other two increase the parser's computational efficiency. Experimental results show that for some (meaningful) graph grammars, our improvements can enhance the parser's performance by orders of magnitude. The proposed improvements will hopefully increase both the parser's applicability and the interest in visual language parsing in general.
Nested Software Structure generated by aedNLC graph grammar–technical report
The use of the UML notation for software specification leads usually to lots of diagrams showing different aspects and components of the software system in a several view. In it was shown that a hierarchical composition of primitive components can be described by graphs. This paper shows that edNLC class of grammar has enough descriptive power to maintain and visuale of the UML package's nested structure.