GrGen
   HOME

TheInfoList



OR:

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.NET
project
GrGen.NET User Manual

Short 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