[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