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