blob: e3328c946c2b4d5c536650f3ae4010b242d7b6cb [file] [log] [blame] [view]
# 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.