/**
* <copyright>
* </copyright>
*
*
*/
package org.feature.multi.perspective.mapping.viewmapping.resource.mtext.grammar;
/**
* The abstract super class for all elements of a grammar. This class provides
* methods to traverse the grammar rules.
*/
public abstract class MtextSyntaxElement {
private MtextSyntaxElement[] children;
private MtextSyntaxElement parent;
private org.feature.multi.perspective.mapping.viewmapping.resource.mtext.grammar.MtextCardinality cardinality;
public MtextSyntaxElement(org.feature.multi.perspective.mapping.viewmapping.resource.mtext.grammar.MtextCardinality cardinality, MtextSyntaxElement[] children) {
this.cardinality = cardinality;
this.children = children;
if (this.children != null) {
for (MtextSyntaxElement child : this.children) {
child.setParent(this);
}
}
}
/**
* Sets the parent of this syntax element. This method must be invoked at most
* once.
*/
public void setParent(MtextSyntaxElement parent) {
assert this.parent == null;
this.parent = parent;
}
/**
* Returns the parent of this syntax element. This parent is determined by the
* containment hierarchy in the CS model.
*/
public MtextSyntaxElement getParent() {
return parent;
}
public MtextSyntaxElement[] getChildren() {
if (children == null) {
return new MtextSyntaxElement[0];
}
return children;
}
public org.eclipse.emf.ecore.EClass getMetaclass() {
return parent.getMetaclass();
}
public org.feature.multi.perspective.mapping.viewmapping.resource.mtext.grammar.MtextCardinality getCardinality() {
return cardinality;
}
}