Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[epsilon-dev] Support for patterns in Epsilon languages

Hi everyone,

I've been thinking about how to provide better support for (EPL)
patterns within other Epsilon languages for a while now. Currently, if
e.g. an ETL transformation needs to make use of patterns, we need to
encode the latter in an EPL program and then use ANT to run the EPL
program, export pattern matches as a "model" and then use that model
in ETL. I'm considering three alternatives.

The first one is to adapt the syntax of ETL, EGX etc. to directly
accommodate patterns so that we can have rules like the following:

rule AB2C
    transform
        a : A from: A.all
        b : B from: a.b
    to c : C { ... }

The second option is to move support for patterns to EolModule so that
all Epsilon programs can also contain patterns, in which case the
transformation would be written as follows:

pattern AB
    a: A from: A.all
    b: B from: a.b { ... }

rule AB2C
    transform ab : P!AB
    to c : C { ...}

The third option is to introduce a new keyword to all Epsilon
languages through which we can invoke EPL e.g.

patterns "AB.epl";

rule AB2C
    transform ab : P!AB
    to c : C { ...}

The main advantage of the first approach is that the syntax will be
more natural since it supports "unnamed" patterns while the main
argument for the second approach is that it should be much more
straightforward to implement. However both of these would potentially
break backwards compatibility as they add all the keywords of EPL to
existing languages. The third approach only needs one keyword
("patterns"), but it feels a bit clunky.

Any thoughts?

Cheers,
Dimitris

-- 
Dimitris Kolovos
Professor of Software Engineering
Department of Computer Science
University of York
http://www.cs.york.ac.uk/~dkolovos

EMAIL DISCLAIMER http://www.york.ac.uk/docs/disclaimer/email.htm


Back to the top