| # Articles |
| |
| This page links to more than **60 articles** on various aspects of Epsilon. Should you find that an article is outdated, please [let us know](https://www.eclipse.org/epsilon/forum). |
| |
| ## Epsilon Object Language |
| |
| - [EOL syntax updates](eol-syntax-updates): This article summarizes changes in the EOL concrete syntax over time. |
| - [Extended Properties](extended-properties): This article demonstrates the extended properties mechanism in EOL (and by inheritance, in all languages in Epsilon). |
| - [Call Java from Epsilon](call-java-from-epsilon): This article demonstrates how to create Java objects, access their properties and call their methods from Epsilon languages. |
| - [Running Epsilon from Java](run-epsilon-from-java): This article demonstrates how to parse and execute Epsilon programs and load models from headless Java applications. |
| - [Call Java functional interfaces from Epsilon](lambda-expressions): 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](profiling): This article demonstrates how to profile Epsilon programs using the platform's built-in profiling tools. |
| - [EOL Interpreter View](eol-interpreter-view): This article demonstrates an Eclipse view for running EOL scripts against selected model elements in EMF-based editors. |
| |
| ## Epsilon Validation Language |
| |
| - [EVL-GMF Integration](evl-gmf-integration): This article demonstrates evaluating EVL constraints from within a GMF-based editor. |
| - [EVL-EMF Validation Integration](evl-emf-integration): This article demonstrates contributing EVL constraints to EMF's validation framework. |
| - [Parallel Execution](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](code-generation-tutorial-egl): This article demonstrates using EGL templates to generate HTML files from an XML document. |
| - [Using template operations in EGL](egl-template-operations): 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](egl-server-side): 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](egx-parameters): This article demonstrates how to parameterize EGL templates and execute them multiple times to produce multiple files. |
| - [Re-using EGL templates](egl-invoke-egl): This article demonstrates how to invoke other EGL templates and direct their output to calling EGL template. |
| - [EGL Patch Templates](egl-patch): This article demonstrates how to patch existing files with EGL. |
| |
| ## Epsilon Transformation Language |
| |
| - [XML to EMF Transformation](xml-to-emf): 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](https://www.eclipse.org/emfatic/): 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](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](epsilon-emf): Frequently-asked questions related to querying and modifying EMF-based models with Epsilon. |
| - [The EMF EPackage Registry View](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](../exeed): 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](inspect-models-exeed): This article demonstrates how you can use Exeed to inspect the structure of your EMF models. |
| - [Working with custom EMF resources](in-memory-emf-model): This article demonstrates how you can work with custom EMF resources in Epsilon. |
| - [Parsing XML documents as EMF models with Flexmi](../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](modular-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 UML models |
| - [Managing Profiled UML Models in Epsilon](profiled-uml-models): This article shows how to create and query profiled Eclipse UML models using Epsilon's core language. |
| |
| ## Epsilon and Simulink models |
| |
| - [Scripting Simulink models using Epsilon](simulink): In this article we demonstrate how you can query and modify Simulink models in Epsilon. |
| - [Managing Matlab Simulink/Stateflow models from Epsilon](simulink-stateflow): 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](plain-xml): 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](csv-emc): This article demonstrates how you can query CSV files with Epsilon programs using the CSV driver. |
| - [Scripting Excel spreadsheets using Epsilon](excel): In this article we demonstrate how you can create, query and modify Excel spreadsheets in Epsilon programs. |
| - [Scripting HTML documents using Epsilon](html): In this article we demonstrate how you can create, query and modify HTML documents in Epsilon programs using the HTML driver. |
| - [Scripting BibTeX files using Epsilon](bibtex): 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 |
| |
| ### Fundamentals |
| |
| - [Eugenia GMF Tutorial](../eugenia): 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](eugenia-polishing): 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](eugenia-patching): 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](eugenia-ant): This article demonstrates how to run Eugenia from Ant, and some of the additional features offered through the Ant task. |
| |
| ### Recipes |
| |
| - [Eugenia: Nodes with images instead of shapes](eugenia-nodes-with-images): 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](eugenia-nodes-with-runtime-images): 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](eugenia-nodes-with-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](eugenia-phantom-nodes): This article demonstrates how to define GMF phantom nodes in Eugenia. |
| |
| |
| ## Picto |
| |
| - [Visualising Models with Picto](../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. |
| - [Drill-Down Sequence Diagrams with Picto](picto-sequence-diagrams): This article demonstrates using Picto and its PlantUML integration to generate drill-down sequence diagrams from models conforming to a minimal EMF-based sequence diagram language. |
| - [Visualising Models with Picto and Sirius](visualising-models-with-picto-and-sirius): This article demonstrates using Picto to produce dynamic web-based views (pie and bar charts) from Sirius-based models. |
| - [Visualising Xtext models with Picto](picto-xtext): This article shows how Picto can be used to produce graphical views from Xtext-based models. |
| |
| ## Workflow (ANT Tasks) |
| |
| - [Running Epsilon's ANT Tasks from Command Line](running-epsilon-ant-tasks-from-command-line): This article shows how to run Epsilon's ANT tasks from command line or in the context of a CI build. |
| |
| ## Human-Usable Textual Notation |
| |
| - [Using the Human-Usable Textual Notation (HUTN) in Epsilon](hutn-basic): This article demonstrates how to specify models using a textual notation. |
| - [Customising Epsilon HUTN documents with configuration](hutn-configuration): This article demonstrates how to customise Epsilon HUTN documents with a configuration model. |
| - [Compliance of Epsilon HUTN to the OMG HUTN Standard](hutn-compliance): This article summarises the similarities and differences between the Epsilon HUTN implementation and the OMG HUTN standard. |
| |
| ## Teaching Material |
| |
| - [MDE Exercises](exercises): This article provides a number of exercises which enable you to test your knowledge on MDE, EMF and Epsilon. |
| |
| ## Technical Support |
| |
| - [Troubleshooting](troubleshooting): A list of common issues that (particularly new) users of Epsilon tend to run into. |
| - [Constructing a helpful minimal example](minimal-examples): 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. |
| |
| ## Extending Epsilon |
| |
| - [Developing a new Epsilon Language](developing-a-new-language): This article demonstrates how to develop a new language on top of Epsilon. |
| - [Developing a new EMC Driver](developing-a-new-emc-driver): This article demonstrates how to develop a new driver for Epsilon's Model Connectivity layer (EMC). |
| - [Monitoring and Instrumenting Epsilon Programs](monitoring-and-instrumenting-epsilon-programs): This article demonstrates how Epsilon interpreters provide support for hooking into the execution of model management programs. |
| |
| ## Installation |
| |
| - [Working with Epsilon 1.x](epsilon-1.x): This article contains instructions for installing legacy versions of Epsilon prior to 2.0. |
| - [Setting up Eclipse for Epsilon development](dev-setup): This article explains how to easily set up and configure an Eclipse IDE for contributing to Epsilon. |
| |
| ## Epsilon Developers |
| |
| - [Running Epsilon from source](running-from-source): This article demonstrates how to run Epsilon from source in your machine. |
| - [Call for User Stories](call-for-user-stories): This is a kind request to all Epsilon Users. |
| - [Manage the Epsilon website locally](manage-the-epsilon-website-locally): This article demonstrates how to manage the Epsilon website in your machine. |
| - [Epsilon development principles](development-principles): These are the guiding principles used by the developers of Epsilon. |
| - [Resolved bugs](resolved-bugs): This article discusses the different types of resolved bugs in Epsilon. |
| - [Managing the target platform](target-platform): This article outlines how to manage the target platform that Epsilon is built against. |
| - [Adding new plugins](adding-new-plugins): This article outlines the process of adding new plugins to the main Epsilon repository. |
| - [Preparing the macOS distribution](preparing-the-macosx-distribution): This article outlines the process of signing the Eclipse macOS distribution. |
| - [Forking Epsilon as a non-committer with Git](git-fork-epsilon): 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](labsupdatesite): 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](release-tasks): This article lists all the tasks required for releasing a version of Epsilon. |
| - [Releasing a new version to Maven Central](maven-release): This article outlines how to release a new version of the Epsilon standalone artifacts to Maven Central. |
| |