COMPONENTS AND APPLICATIONS / SOFTWARE BILL OF MATERIALS
--------------------------------------------------------

GrGen.exe: C#/.NET compiler application
- uses grgen.jar compiler frontend
- pattern matcher and sequence code generation, utilizing a few of the components mentioned below (esp. sequence parsing)

(G)GrShell: C#/.NET shell application
- command line interpreter, based on a CSharpCC-generated parser for the shell language
- with graph rendering, sequence execution and debugging functionality supplied by several internal libraries and external libraries/programs,
  some are only loaded on-demand/as-needed
- two versions: console application GrShell, Windows Forms GUI console application GGrShell, based on a common C# shell library

Several internal C#/.NET libraries:
- libGr/lgspBackend containing e.g. the runtime environment including pattern matcher re-generation and the sequences interpreter
- the graph viewer and the sequence debugger library and its Windows Forms extension
- a console and OS abstraction library and its Windows Forms extension
- a persistence provider library implementing the persistent graph
- they employ CSharpCC-generated parsers for the sequence language, and constant literals

External libraries/programs:
- the MSAGL library for graph drawing, in its Windows Forms version
- the SQLite database for persistent storage of the graph

grgen.jar: JAVA compiler frontend
- model code, pattern specification and rewrite code generation, plus sequences checking
- ANTLR-generated parsers for the model and the actions language, as well as the sequence language (compiled embedded sequences)

yComp.jar: JAVA graph visualization application
- based on yFiles for graph drawing
- utilizing ANTLR

The following section goes into detail regarding the exact files, as does the LICENSE.txt, the latter lists the licenses that apply to the components.


USAGE SCENARIOS AND DEPENDENCIES
--------------------------------

Running a generated graph rewrite system from an own application deployed to some user machine
 employing compiled model and actions dlls from API level, sequences execution from API,
needs libConsoleAndOS.dll, libGr.dll, lgspBackend.dll (dlls from LGPL licensed code)
Prerequisite: .NET Framework or mono

Additional graph visualization by MSAGL or sequence debugging needs graphViewerAndSequencesDebugger.dll
and graphViewerAndSequencesDebuggerWindowsForms.dll, libConsoleAndOSWindowsForms.dll
 they require Microsoft.Msagl.dll, Microsoft.Msagl.Drawing.dll, Microsoft.Msagl.GraphViewerGdi.dll, 
 plus the System.***.dlls you find in the bin folder (with exception of the SQLite one)
Additional database persistence by SQLite needs libGrPersistenceProviderSQLite.dll
 they require System.Data.SQLite.dll, and e_sqlite3.dll for Windows (x64) or libe_sqlite3.so for Linux (x64)
Additional shell script execution/shell functionality needs libGrShell.dll

In order to visualize graphs with graphviz, you have to install the corresponding package and make the programs available in the search path.

Developing a graph rewrite system with GrGen.exe (compilation without debugging)
 model and actions specification files are compiled with GrGen to model and actions dlls
This needs the same as 1. without additions, additionally the GrGen compiler frontend grgen.jar is required,
it needs antlr-runtime-3.4.jar and jargs.jar
Prerequisite: JAVA (RE)

Running a generated graph rewrite system from the execution host GrShell.exe
 as an interactive workbench application or a script execution host
needs the same as 1. without additions, when optional functionality is needed, the according additions are required,
 GGrShell.exe requires libConsoleAndOSWindowsForms.dll in addition
Allowed In academia: additional graph visualization by yComp, needs graphViewerAndSequencesDebugger.dll utilizing yComp.jar,
 which requires yObf.jar, graphmlObf.jar, ysvgObf.jar, batik.jar, antlr-3.1.1.jar (graphViewerAndSequencesDebuggerWindowsForms.dll is not needed then)
Prerequisite: JAVA (RE)

Developing a graph rewrite system with GrShell or GGrShell
 they automatically employ the GrGen compiler as needed (requires the dependencies of 2.)
 (it works like a mini-make, following the includes and checking the file dates)
 (for debugging, the according graph visualization/sequence debugger additions are employed)


Developing GrGen itself requires the source code from the public git repository at https://github.com/ejaku/grgen
You may also build it locally to gain access to the debug symbols and source level diagnostics in case of crashes.
Then you need further components, as explained in BUILDING_AND_TESTING.txt (sources only).
You may also take a look at the user manual.
