/**
* <copyright>
* </copyright>
*
*
*/
package ssl.resource.ssl.grammar;
/**
* The abstract super class for all elements of a grammar. This class provides
* methods to traverse the grammar rules.
*/
public abstract class SslSyntaxElement {
private SslSyntaxElement[] children;
private SslSyntaxElement parent;
private ssl.resource.ssl.grammar.SslCardinality cardinality;
public SslSyntaxElement(ssl.resource.ssl.grammar.SslCardinality cardinality, SslSyntaxElement[] children) {
this.cardinality = cardinality;
this.children = children;
if (this.children != null) {
for (SslSyntaxElement child : this.children) {
child.setParent(this);
}
}
}
public void setParent(SslSyntaxElement parent) {
assert this.parent == null;
this.parent = parent;
}
public SslSyntaxElement[] getChildren() {
if (children == null) {
return new SslSyntaxElement[0];
}
return children;
}
public org.eclipse.emf.ecore.EClass getMetaclass() {
return parent.getMetaclass();
}
public ssl.resource.ssl.grammar.SslCardinality getCardinality() {
return cardinality;
}
}