pre { | |
} | |
@abstract | |
rule NamedElements | |
match l : Left!NamedElement | |
with r : Right!NamedElement { | |
compare : l.name = r.name | |
} | |
@abstract | |
rule PackageableElements | |
match l : Left!PackageableElement | |
with r : Right!PackageableElement | |
extends NamedElements { | |
compare : l.package.matches(r.package) | |
} | |
rule Packages | |
match l : Left!Package | |
with r : Right!Package | |
extends PackageableElements { | |
} | |
rule Models | |
match l : Left!Model | |
with r : Right!Model { | |
compare : true | |
} | |
@greedy | |
rule Classifiers | |
match l : Left!Classifier | |
with r : Right!Classifier | |
extends PackageableElements { | |
} | |
rule Features | |
match l : Left!Feature | |
with r : Right!Feature | |
extends NamedElements { | |
compare : l.owner.matches(r.owner) | |
} | |
rule Operations | |
match l : Left!Operation | |
with r : Right!Operation | |
extends Features { | |
compare { | |
return l.parameters.size() = r.parameters.size() and | |
l.parameters.forAll(lp|lp.matches(r.parameters. | |
at(l.parameters.indexOf(lp)))); | |
} | |
} | |
rule Parameters | |
match l : Left!Parameter | |
with r : Right!Parameter { | |
compare : l.type.matches(r.type) | |
} |