
GrGen.NET is a
software development tool
A programming tool or software development tool is a computer program that is used to develop another computer program, usually by helping the developer manage computer files. For example, a programmer may use a tool called a source code editor ...
that offers
programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
s (
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 ...
s) that are optimized for the processing of
graph structured data.
The core of the languages consists of
modular
Module, modular and modularity may refer to the concept of modularity. They may also refer to:
Computer science and engineering
* Modular design, the engineering discipline of designing complex devices using separately designed sub-components
...
graph rewrite rules, which are built on
declarative
Declarative may refer to:
* Declarative learning, acquiring information that one can speak about
* Declarative memory, one of two types of long term human memory
* Declarative programming, a computer programming paradigm
* Declarative sentence, a t ...
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''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
programming,
and are completed with language devices known from database
query language
A query language, also known as data query language or database query language (DQL), is a computer language used to make queries in databases and information systems. In database systems, query languages rely on strict theory to retrieve informa ...
s.
The Graph Rewrite
GENerator 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 connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
into code written in any
.NET-language.
GrGen can be executed under
Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
and
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
(
Mono
Mono may refer to:
Biology
* Infectious mononucleosis, "the kissing disease"
* Monocyte, a type of leukocyte (white blood cell)
* Monodactylidae, members of which are referred to as monos
Technology and computing
* Mono (audio), single-c ...
needed) and is
open source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use and view the source code, design documents, or content of the product. The open source model is a decentrali ...
available under
LGPL
The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
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
Science Biology
* Seashell, a hard outer layer of a marine ani ...
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
Abstraction is a process where general rules and concepts are derived from the use and classifying of specific examples, literal (reality, real or Abstract and concrete, concrete) signifiers, first principles, or other methods.
"An abstraction" ...
of graph-based representations, such as those employed in
engineering
Engineering is the practice of using natural science, mathematics, and the engineering design process to Problem solving#Engineering, solve problems within technology, increase efficiency and productivity, and improve Systems engineering, s ...
,
model transformation
A model transformation, in model-driven engineering, is an automated way of modifying and creating platform-specific model from platform-independent ones. An example use of model transformation is ensuring that a family of models is consistent, in ...
,
computational linguistics
Computational linguistics is an interdisciplinary field concerned with the computational modelling of natural language, as well as the study of appropriate computational approaches to linguistic questions. In general, computational linguistics ...
, or
compiler construction
In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
(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
A system is a group of interacting or interrelated elements that act according to a set of rules to form a unified whole. A system, surrounded and influenced by its open system (systems theory), environment, is described by its boundaries, str ...
offers the highest combined speed of
development
Development or developing may refer to:
Arts
*Development (music), the process by which thematic material is reshaped
* Photographic development
*Filmmaking, development phase, including finance and budgeting
* Development hell, when a proje ...
and
execution
Capital punishment, also known as the death penalty and formerly called judicial homicide, is the state-sanctioned killing of a person as punishment for actual or supposed misconduct. The sentence ordering that an offender be punished in ...
available for the
algorithm
In mathematics and computer science, an algorithm () is a finite sequence of Rigour#Mathematics, mathematically rigorous instructions, typically used to solve a class of specific Computational problem, problems or to perform a computation. Algo ...
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 discret ...
-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
In computer science, automatic programming is a type of computer programming in which some mechanism generates a computer program, to allow human programmers to write the code at a higher abstraction level.
There has been little agreement on the ...
Domain-specific programming languages
Graph rewriting