blob: df88c6f05cbad361b4a8a6b8638e43d7f5b07eee [file] [log] [blame]
\section{Task-Specific Languages}
\label{sec:TaskSpecificLanguages}
Having discussed EOL in detail, in the following chapters, the following task-specific languages built atop EOL are presented:
\begin{itemize}
\item Epsilon Validation Language (EVL, \hyperref[sec:EVL]{Chapter \ref*{sec:EVL}})
\item Epsilon Transformation Language (ETL, \hyperref[sec:ETL]{Chapter \ref*{sec:ETL}})
\item Epsilon Generation Language (EGL, \hyperref[sec:EGL]{Chapter \ref*{sec:EGL}})
\item Epsilon Wizard Language (EWL, \hyperref[sec:EWL]{Chapter \ref*{sec:EWL}})
\item Epsilon Comparison Language (ECL, \hyperref[sec:ECL]{Chapter \ref*{sec:ECL}})
\item Epsilon Merging Language (EML, \hyperref[sec:EML]{Chapter \ref*{sec:EML}})
\item Flock Model Migration Language (\hyperref[sec:Flock]{Chapter \ref*{sec:Flock}}) )
\item Epsilon Pattern Language (EPL, \hyperref[sec:EPL]{Chapter \ref*{sec:EPL}})
\item Epsilon Model Generation (EMG, \hyperref[sec:EMG]{Chapter \ref*{sec:EMG}})
\end{itemize}
For each language, the abstract and concrete syntax are presented. To enhance readability, the concrete syntax of each language is presented in an abstract, pseudo-grammar form. An informal but detailed discussion, accompanied by concise examples for each feature of interest, of its execution semantics and the runtime structures that are essential to implement those semantics is also provided.
Descriptions of the abstract and concrete syntaxes of the task-specific languages are particularly brief since they inherit most of their syntax and features from EOL. As discussed earlier, this contributes to establishing a platform of uniform languages where each provides a number of unique task-specific constructs but does not otherwise deviate from each other.
To reduce unnecessary repetition, the following sections do not repeat all the features inherited from EOL. However, the reader should bear in mind that by being supersets of EOL, all task-specific languages can exploit the features it provides. For example, by reusing EOL's user-input facilities (discussed in \ref{sec:Design.EOL.UserInput}), it is feasible to specify interactive model to model transformations in ETL. As well, \emph{Native} types can be used to access or update information stored in an external system/tool (e.g. in a database or a remote server) during model validation with EVL or model comparison with ECL.
Following the presentation, in Chapters \ref{sec:EVL} -- \ref{sec:EPL}, of the task-specific languages implemented in Epsilon, Chapter \ref{sec:Design.ImplementingANewLanguage} provides a brief overview of the process needed to construct a new language that addresses a task that is not supported by one of the existing languages.
\input{EVL}
\input{ETL}
\input{EWL}
\input{EGL}
\input{ECL}
\input{EML}
\input{Flock}
\input{EPL}
\input{EMG}
\input{NewLanguage}