[gme-users] Metamodel composition ?
Vamshi Raghu
vamshi.raghu at mail.mcgill.ca
Sun Apr 24 14:34:50 CDT 2005
> You are correct in your assessment. You cannot define an extension of
> P1 called P2 in P1. The way you could define an extension of P1 is by
> doing it in MetaGME and using P1 as a library.
>
> I would like to know more about the reason for wanting to define the
> language P2 using instances of P1. We could give some suggestions
> based on this motivation.
>
> Thanks,
> Adi
I'll try to make the example clearer:
1)
Lets say I've defined a language with delay, gain, adder and patch-cord
components (L1), using MetaGME (MG). This gives me a simple language for
describing digital filters. It also gives me a nice visual environment
(V1) to do this. Now I give my environment to a signal processing expert
and ask him to describe a language that contains predefined filters like
feedforward comb filters (FFCFs), feedback comb filters (FBCFs), allpass
filters (APs), etc using this environment. The description of this new
language L2 is much more concise and clear in L1, than in MG. So one
motivation is readability/maintainability.
2)
Now lets assume the expert was able to define L2 and it's corresponding
environment V2 using L1-V1. This would give me L2-V2 which has FFCFs and
FBCFs, whose parameters are defined visually in V1. (So people familiar
with the notation from a typical electrical engineering textbook could
use V1 with little training to create the new language+environment of
L2-V2). Further, I could define, similar to GReAT, *patterns*/sequences
of filters/filter-networks, using the V1 notation. Describing these
patterns in the MG notation (class diagrams), might be difficult or
impossible for the domain expert, but maybe possible with little effort
using V1 + a pattern language.
So the other motivation is reuse. Can the "domain-specific visual
modeling" idea be extended to "domain-specific visual metamodeling" ?
I hope that was a better description.
One solution I can think of is to write an *interpreter* for L1 which
generates and registers the paradigm L2 and the corresponding
metaconfiguration file for V2. Perhaps I should take a look at the
GME-GUI code to see how this is done? Or maybe I can do this with GReAT?
Thanks!
-Vamshi
More information about the gme-users
mailing list