\chapter{Introduction} | |
\label{chp:Introduction} | |
The purpose of this book is to provide a complete reference of the languages provided by the Epsilon project (\url{http://www.eclipse.org/epsilon}). | |
\section{What is Epsilon?} | |
Epsilon, standing for Extensible Platform of Integrated Languages for mOdel maNagement, is a platform for building consistent and interoperable task-specific languages for model management tasks such as model transformation, code generation, model comparison, merging, refactoring and validation. | |
Epsilon currently provides the following languages: | |
\begin{itemize} | |
\item Epsilon Object Language (EOL) | |
\item Epsilon Validation Language (EVL) | |
\item Epsilon Transformation Language (ETL) | |
\item Epsilon Comparison Language (ECL) | |
\item Epsilon Merging Language (EML) | |
\item Epsilon Wizard Language (EWL) | |
\item Epsilon Generation Language (EGL) | |
\item Epsilon Pattern Language (EPL) | |
\end{itemize} | |
For each language, Epsilon provides Eclipse-based development tools and an interpreter\footnote{The interpreters are not bound in any way to Eclipse and can also be used in standalone Java applications.} that can execute programs written in this language. Epsilon also provides a set of ANT tasks for creating workflows of different tasks (e.g. a validation followed by a transformation followed by code generation). The following chapters present the syntax of each language and a few usage examples. | |
\section{How To Read This Book} | |
If you are reading this book, there's a good chance that you are already interested in using a particular task-specific language provided by Epsilon (e.g. EVL for model validation or ETL for model transformation). In this case, you don't have to need to read about all the languages: you should start by spending some time reading Chapter \ref{sec:Design.EOL} that presents the core Epsilon Object Language (EOL) -- as all languages of the platform extend EOL both syntactically and semantically -- and you can then proceed directly to the chapter that discusses the particular language you are interested in (e.g. Chapter \ref{sec:EVL} for EVL). | |
\section{Questions and Feedback} | |
Our intention is to keep this book a live project that will evolve in parallel with Epsilon. Therefore, your feedback on any omissions, errors or outdated content is critical and much appreciated (and will also earn you a place in the Acknowledgements section of the book). Please send your feedback to the Epsilon forum (see \url{http://www.eclipse.org/epsilon/forum/} for detailed instructions). | |
\section{Additional Resources} | |
As mentioned above, information about Epsilon and examples are available in many different places. If you can't find what you are looking for in this book there are a few other places where you may try. | |
\subsection{Epsilon Website} | |
Epsilon is a component of the Eclipse Modelling project, hosted under \url{http://www.eclipse.org/epsilon}. In the documentation section \url{http://www.eclipse.org/epsilon/doc} of the website you can find examples, articles and screencasts on all tools and languages that Epsilon provides. | |
\subsection{EpsilonLabs} | |
EpsilonLabs is a satellite project of Epsilon that hosts experimental applications/extensions of Epsilon or other content that cannot be shared under Eclipse.org due to licensing issues (e.g. incompatibility with EPL). EpsilonLabs is hosted at GitHub: \url{https://github.com/epsilonlabs} | |
\subsection{Twitter} | |
To keep in touch with the latest news on Epsilon, please follow \href{http://twitter.com/#!/epsilonews}{@epsilonews} on Twitter. |