This page contains an index of articles presenting a range of tools and languages in Epsilon. Should you find that an article contains errors or is inconsistent with the current release of Epsilon, please let us know.
Epsilon Object Language¶
- EOL syntax updates: This article summarizes changes in the EOL concrete syntax over time.
- Extended Properties: This article demonstrates the extended properties mechanism in EOL (and by inheritance, in all languages in Epsilon).
- Call Java from Epsilon: This article demonstrates how to create Java objects, access their properties and call their methods from Epsilon languages.
- Call Java functional interfaces from Epsilon: This article demonstrates how to call native methods which take functions as their parameter, using lambdas and streams directly from Epsilon using EOL syntax.
- Profiling Epsilon Programs: This article demonstrates how to profile Epsilon programs using the platform's built-in profiling tools.
Epsilon Validation Language¶
- EVL-GMF Integration: This article demonstrates evaluating EVL constraints from within a GMF-based editor.
- Parallel Execution: This article explains how to use the parallel module implementations for EOL and rule-based languages like EVL.
Epsilon Generation Language¶
- Code Generation Tutorial with EGL: This article demonstrates using EGL templates to generate HTML files from an XML document.
- Using template operations in EGL: This article demonstrates template operations for writing re-usable code in EGL (the model-to-text language of Epsilon).
- EGL as a server-side language: This article demonstrates using EGL (the model-to-text language of Epsilon) in Tomcat to produce HTML pages from EMF models on the fly.
- Co-ordinating EGL templates with EGX: This article demonstrates how to parameterize EGL templates and execute them multiple times to produce multiple files.
- Re-using EGL templates: This article demonstrates how to invoke other EGL templates and direct their output to calling EGL template.
Epsilon Transformation Language¶
- XML to EMF Transformation: This article shows how to transform an XML document into an EMF model using the Epsilon Transformation Language and Epsilon's XML driver
Epsilon and EMF models¶
- Emfatic language reference: Emfatic is a language designed to represent EMF Ecore models in a textual form. This article details the syntax of Emfatic and the mapping between Emfatic declarations and the corresponding Ecore constructs.
- Reflective EMF tutorial: This tutorial demonstrates how to create an EMF Ecore metamodel and a sample model that conforms to it reflectively (i.e. without generating any code).
- Epsilon and EMF: Frequently-asked questions related to querying and modifying EMF-based models with Epsilon.
- The EMF EPackage Registry View: This article demonstrates the EPackage Registry view which allows developers to inspect the contents of the registered EMF EPackages.
- Exeed annotation reference: This article lists the annotations you can use on your metamodels to customize the look of the Exeed model editor.
- Inspecting EMF models with Exeed: This article demonstrates how you can use Exeed to inspect the structure of your EMF models.
- Working with custom EMF resources: This article demonstrates how you can work with custom EMF resources in Epsilon.
- Parsing XML documents as EMF models with Flexmi: This article demonstrates how you can use Flexmi to parse XML documents in a fuzzy manner as instances of Ecore metamodels.
- Modularity Mechanisms in Flexmi: This article demonstrates how you can break down Flexmi models over multiple files and use templates to capture complex reusable structures in your models.
Epsilon and Simulink models¶
- Scripting Simulink models using Epsilon: In this article we demonstrate how you can query and modify Simulink models in Epsilon.
- Managing Matlab Simulink/Stateflow models from Epsilon: This tutorial shows you how to manipulate Simulink and Stateflow blocks from within Epsilon.
Epsilon and other types of models¶
- Scripting XML documents using Epsilon: In this article we demonstrate how you can create, query and modify plain standalone XML documents (i.e. no XSD/DTD needed) in Epsilon programs using the PlainXML driver.
- Scripting CSV files using Epsilon: This article demonstrates how you can query CSV files with Epsilon programs using the CSV driver.
- Scripting BibTeX files using Epsilon: In this article we demonstrate how you can query a list of references stored in BibTeX files with Epsilon programs using the BibTeX driver.
- EuGENia GMF Tutorial: This article provides a guide to using EuGENia for developing GMF editors, as well as its complete list of features and supported annotations.
- Customizing an editor generated with EuGENia: This article demonstrates EuGENia's polishing transformations, which can be used to customize GMF editors in a systematic and reproducible way.
- Applying source code patches to an editor generated with EuGENia: This article demonstrates EuGENia's patch generation and application functionality, which can be used to customize the Java source code generated by GMF in a systematic and reproducible way.
- EuGENia: Automated Invocation with Ant: This article demonstrates how to run Eugenia from Ant, and some of the additional features offered through the Ant task.
- EuGENia: Nodes with images instead of shapes: This article shows how to create nodes in your GMF editor that are represented with images (png, jpg etc.) instead of the standard GMF shapes (rectangle, ellipse etc.)
- EuGENia: Nodes with images defined at run-time: This article addresses the case where the end-user needs to set an image for each node at runtime.
- EuGENia: Nodes with a centred layout: This article shows how to create nodes in your GMF editor whose contents are centred both vertically and horizontally.
- EuGENia: Phantom nodes in GMF editors: This article demonstrates how to define GMF phantom nodes in EuGENia.
- Visualising Models with Picto: Picto is an Eclipse view for visualising models via model-to-text transformation to SVG/HTML. The article introduces Picto and shows the tool in action.
Human-Usable Textual Notation¶
- Using the Human-Usable Textual Notation (HUTN) in Epsilon: This article demonstrates how to specify models using a textual notation.
- Customising Epsilon HUTN documents with configuration: This article demonstrates how to customise Epsilon HUTN documents with a configuration model.
- Compliance of Epsilon HUTN to the OMG HUTN Standard: This article summarises the similarities and differences between the Epsilon HUTN implementation and the OMG HUTN standard.
- MDE Exercises: This article provides a number of exercises which enable you to test your knowledge on MDE, EMF and Epsilon.
- Constructing a helpful minimal example: From time to time, you may run into a problem when using Epsilon or find a bug. This article describes how to construct a minimal example that we can use to reproduce the problem on our machine.
- Developing a new Epsilon Language: This article demonstrates how to develop a new language on top of Epsilon.
- Developing a new EMC Driver: This article demonstrates how to develop a new driver for Epsilon's Model Connectivity layer (EMC).
- Working with Epsilon 1.x: This article contains instructions for installing legacy versions of Epsilon prior to 2.0.
- Setting up Eclipse for Epsilon development: This article explains how to easily set up and configure an Eclipse IDE for contributing to Epsilon.
- Running Epsilon from source: This article demonstrates how to run Epsilon from source in your machine.
- Call for User Stories: This is a kind request to all Epsilon Users.
- Manage the Epsilon website locally: This article demonstrates how to manage the Epsilon website in your machine.
- Epsilon development principles: These are the guiding principles used by the developers of Epsilon.
- Resolved bugs: This article discusses the different types of resolved bugs in Epsilon.
- Managing the target platform: This article outlines how to manage the target platform that Epsilon is built against.
- Adding new plugins: This article outlines the process of adding new plugins to the main Epsilon repository.
- Preparing the macOS distribution: This article outlines the process of signing the Eclipse macOS distribution.
- Forking Epsilon as a non-committer with Git: This article shows how to branch Epsilon into a different remote repository whilst still getting updates from the main project.
- Publishing to the EpsilonLabs Updatesite: This article outlines the process for publishing a plugin (EMC driver/language/tool) from the EpsilonLabs Github organisation to the EpsilonLabs updatesite.
- Releasing a new version of Epsilon: This article lists all the tasks required for releasing a version of Epsilon.
- Releasing a new version to Maven Central: This article outlines how to release a new version of the Epsilon standalone artifacts to Maven Central.