blob: 61437918787a031666a74f2927578d998a6a96b9 [file] [log] [blame]
\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.