⚠️ Note: This project is currently outdated.
You may need to update dependencies and ensure compatibility with the latest EO versions before using it.
It is not deprecated, but active maintenance is currently paused.
The sodg-maven-plugin
builds a graph from an EO program.
SODG stands for Surging Object DiGraph.
The primary consumer of SODG graphs is
the reo project.
You can
find some examples
of .sodg
files.
To generate these text files, we first use an intermediate XML format:
<i name='ADD'>
<a>v1</a>
</i>
<i name='ADD'>
<a>v2</a>
</i>
<i name='BIND'>
<a>v1</a>
<a>v2</a>
</i>
Which is equivalent to:
ADD v1
ADD v2
BIND v1, v2
This DSL consists of only three commands:
ADD
(one argument) - adds a new node to the graph
BIND
(two arguments) - creates a directed edge from one node to another
PUT
(one argument) - attaches data to a node
The sodg-maven-plugin
performs the following steps:
- Turns
.xmir
into intermediate XML - Turns XML into a
.dot
graph (renderable by GraphViz) - Turns XML into
.sodg
text file (with DSL) - Turns XML into
.xe
(Xembly) file that, if executed, would generate a graph in XML - Turns XML into
.graph.xml
, which is a graph as XML
The .sodg
file is essentially a sequence of instructions for a virtual machine
that parses them.
An example of such a machine can be
found here.
When the graph is built by the virtual machine, it must be possible to execute
a program using graph traversing algorithm. Once the graph is built,
it can be used to execute a program via a graph traversal algorithm.
An example of such an executor isreo.
Fork repository, make changes, then send us
a pull request.
We will review your changes and apply them to the master
branch shortly,
provided they don't violate our quality standards. To avoid frustration,
before sending us your pull request please run full Maven build:
mvn clean install -Pqulice
You will need Maven 3.3+ and Java 11+ installed.