GrGen.NET is a
software development tool
A programming tool or software development tool is a computer program that software developers use to create, debug, maintain, or otherwise support other programs and applications. The term usually refers to relatively simple programs, that can ...
that offers
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming ...
s (
domain-specific languages) that are optimized for the processing of
graph structured data.
The core of the languages consists of
modular
Broadly speaking, modularity is the degree to which a system's components may be separated and recombined, often with the benefit of flexibility and variety in use. The concept of modularity is used primarily to reduce complexity by breaking a s ...
graph rewrite rules, which are built on
declarative graph pattern matching and rewriting; they are supplemented by many of the constructs that are used in
imperative and
object-oriented
Object-oriented programming (OOP) is a programming paradigm based on the concept of " objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of p ...
programming,
and are completed with language devices known from database
query language
Query languages, data query languages or database query languages (DQL) are computer languages used to make queries in databases and information systems. A well known example is the Structured Query Language (SQL).
Types
Broadly, query language ...
s.
The Graph Rewrite
GENerator
Generator may refer to:
* Signal generator, electronic devices that generate repeating or non-repeating electronic signals
* Electric generator, a device that converts mechanical energy to electrical energy.
* Generator (circuit theory), an eleme ...
compiles the languages into efficient
CLI assemblies (via
C#-Code in an intermediate step), which can be integrated via an
API
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how ...
into code written in any
.NET-language.
GrGen can be executed under
Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ser ...
and
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
(
Mono
Mono may refer to:
Common meanings
* Infectious mononucleosis, "the kissing disease"
* Monaural, monophonic sound reproduction, often shortened to mono
* Mono-, a numerical prefix representing anything single
Music Performers
* Mono (Japanese b ...
needed) and is
open source available under
LGPL v3.
For rapid prototyping and debugging, an interactive
shell
Shell may refer to:
Architecture and design
* Shell (structure), a thin structure
** Concrete shell, a thin shell of concrete, usually with no interior columns or exterior buttresses
** Thin-shell structure
Science Biology
* Seashell, a hard o ...
and a (VCG-)graph viewer are included in the package.
With its languages and its visual and stepwise debugging, GrGen allows one to develop at the natural level of
abstraction of graph-based representations, such as those employed in
engineering
Engineering is the use of scientific principles to design and build machines, structures, and other items, including bridges, tunnels, roads, vehicles, and buildings. The discipline of engineering encompasses a broad range of more speciali ...
,
model transformation
A model transformation, in model-driven engineering, is an automated way of modifying and creating models. An example use of model transformation is ensuring that a family of Computer model, models is consistent, in a precise sense which the softw ...
,
computational linguistics, or
compiler construction
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
(as
intermediate representation
An intermediate representation (IR) is the data structure or code used internally by a compiler or virtual machine to represent source code. An IR is designed to be conducive to further processing, such as optimization and translation. A "good" ...
).
GrGen increases productivity for those kinds of tasks far beyond what can be achieved by programming in a traditional programming language; due to many implemented performance optimizations it still allows one to achieve high-performance solutions.
Its authors claim that the
system offers the highest combined speed of
development
Development or developing may refer to:
Arts
*Development hell, when a project is stuck in development
*Filmmaking, development phase, including finance and budgeting
*Development (music), the process thematic material is reshaped
* Photograph ...
and
execution
Capital punishment, also known as the death penalty, is the state-sanctioned practice of deliberately killing a person as a punishment for an actual or supposed crime, usually following an authorized, rule-governed process to conclude that ...
available for the
algorithm
In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing ...
ic processing of
graph
Graph may refer to:
Mathematics
*Graph (discrete mathematics), a structure made of vertices and edges
**Graph theory, the study of such graphs and their properties
*Graph (topology), a topological space resembling a graph in the sense of discre ...
-based representations (based on their performance regarding diverse tasks posed at different editions of the Transformation Tool Contest (/GraBaTs)).
Specification sample
Below is an example containing a graph model and rule specifications from the GrGen.NET-solution to th
AntWorld-case posed a
Grabats 08.
Graph model:
node class GridNode
node class GridCornerNode extends GridNode;
node class AntHill extends GridNode
node class Ant
edge class GridEdge connect GridNode
-> GridNode
edge class PathToHill extends GridEdge;
edge class AntPosition;
Rewrite rules:
rule TakeFood(curAnt:Ant)
rule SearchAlongPheromones(curAnt:Ant)
test ReachedEndOfWorld(curAnt:Ant) : (GridNode)
{
curAnt -:AntPosition-> n:GridNode\AntHill;
negative {
n <-:PathToHill-;
}
return (n);
}
External links
* Homepage of th
GrGen.NETproject
GrGen.NET User ManualShort introduction into GrGen.NET 1.4 (outdated)
Conference papers
GrGen: A Fast SPO-Based Graph Rewriting Tool
- ICGT 06
Generation of Sierpinski Triangles: A Case Study for Graph Transformation Tools
- AGTIVE 07
Graph Rewriting for Hardware Dependent Program Optimizations
- AGTIVE 07
A First Experimental Evaluation of Search Plan Driven Graph Pattern Matching
- AGTIVE 07
Customizing GrGen.NET for Model Transformation
- GraMoT 08
Graph Rewrite Rules with Structural Recursion
- ICGT/GCM 08
See also
*
Graph transformation, Graph transformation / rewriting
*
Domain Specific Language
A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging ...
(DSL)
*
Source Code Generation
Domain-specific programming languages
Graph rewriting