Added EGL/Emfatic/Flexmi example
diff --git a/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/EglFlexmiEmfaticStandaloneExample.java b/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/EglFlexmiEmfaticStandaloneExample.java
new file mode 100644
index 0000000..2a5cb7f
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/EglFlexmiEmfaticStandaloneExample.java
@@ -0,0 +1,36 @@
+package org.eclipse.epsilon.examples.standalone.egl.flexmiemfatic;
+
+import java.nio.file.Paths;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.emfatic.core.EmfaticResourceFactory;
+import org.eclipse.epsilon.egl.EglTemplateFactoryModuleAdapter;
+import org.eclipse.epsilon.emc.emf.EmfModel;
+import org.eclipse.epsilon.flexmi.FlexmiResourceFactory;
+
+public class EglFlexmiEmfaticStandaloneExample {
+
+	public static void main(String[] args) throws Exception {
+
+		// Make Flexmi and Emfatic known to EMF as we will use them
+		// to express the input model and metamodel of the transformation
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("flexmi", new FlexmiResourceFactory());
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("emf", new EmfaticResourceFactory());
+		
+		// Parse the EGL template
+		EglTemplateFactoryModuleAdapter module = new EglTemplateFactoryModuleAdapter();
+		module.parse(EglFlexmiEmfaticStandaloneExample.class.getResource("project2html.egl"));
+		
+		// Configure its source model
+		EmfModel model = new EmfModel();
+		model.setModelFile(Paths.get(EglFlexmiEmfaticStandaloneExample.class.getResource("psl.flexmi").toURI()).toFile().getAbsolutePath());
+		model.setMetamodelFile(Paths.get(EglFlexmiEmfaticStandaloneExample.class.getResource("psl.emf").toURI()).toFile().getAbsolutePath());
+		model.setName("M");
+		model.load();
+		module.getContext().getModelRepository().addModel(model);
+
+		// Execute the EGL template and print its output
+		System.out.println(module.execute());
+	}
+
+}
diff --git a/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/project2html.egl b/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/project2html.egl
new file mode 100644
index 0000000..80b3560
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/project2html.egl
@@ -0,0 +1,24 @@
+<html>
+<head>
+[*Bootstrap CSS*]
+<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css">
+</head>
+
+<table class="table table-striped">
+[*Generate a header row with the names of all persons*]
+<tr>
+	<th></th>
+	[%for (p in Person.all){%]
+	<th>[%=p.name%]</th>
+	[%}%]
+</tr>
+[*Generate one row per task with the participants' effort*]
+[%for (t in Task.all){%]
+<tr>
+	<th>[%=t.title%]</th>
+	[%for (p in Person.all){%]
+	<td>[%=t.effort.selectOne(e|e.person = p)?.percentage ?: 0%]%</td>
+	[%}%]
+</tr>
+[%}%]
+</table>
\ No newline at end of file
diff --git a/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/psl.emf b/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/psl.emf
new file mode 100644
index 0000000..5c9f4c7
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/psl.emf
@@ -0,0 +1,28 @@
+@namespace(uri="psl", prefix="")
+package psl;
+
+class Project {
+	attr String title;
+	attr String description;
+	val Task[*] tasks;
+	@diagram(direction="right")
+	val Person[*] people;
+}
+
+class Task {
+	attr String title;
+	attr int start;
+	attr int duration;
+	@diagram(direction="right")
+	val Effort[*] effort;
+}
+
+class Person {
+	attr String name;
+}
+
+class Effort {
+    @diagram(direction="up")
+	ref Person person;
+	attr int percentage = 100;
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/psl.flexmi b/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/psl.flexmi
new file mode 100644
index 0000000..bd5e81e
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/psl.flexmi
@@ -0,0 +1,15 @@
+<?nsuri psl?>
+<project title="ACME">
+	<person name="Alice"/>
+	<person name="Bob"/>
+	<task title="Analysis" start="1" dur="3">
+		<effort person="Alice"/>
+	</task>
+	<task title="Design" start="4" dur="6">
+		<effort person="Bob"/>
+	</task>
+	<task title="Implementation" start="7" dur="3">
+		<effort person="Bob" perc="50"/>
+		<effort person="Alice" perc="50"/>
+	</task>
+</project>
\ No newline at end of file