/* * @(#)$Id: ElementRules.java,v 1.6 2001/05/16 21:33:17 Bear Exp $ * * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved. * * This software is the proprietary information of Sun Microsystems, Inc. * Use is subject to license terms. * */ package com.sun.msv.grammar.relax; import com.sun.msv.grammar.*; /** * Set of ElementRule objects that share the label name. * * ReferenceExp.exp contains choice of ElementRule objects. * * @author <a href="mailto:kohsuke.kawaguchi@eng.sun.com">Kohsuke KAWAGUCHI</a> */ public class ElementRules extends ReferenceExp implements Exportable { protected ElementRules( String label, RELAXModule ownerModule ) { super(label); this.ownerModule = ownerModule; } public boolean equals( Object o ) { return this==o; } protected boolean calcEpsilonReducibility() { // elementRules are always not epsilon-reducible. return false; } public void addElementRule( ExpressionPool pool, ElementRule newRule ) { newRule.parent = this; if( exp==null ) // the first element exp = newRule; else exp = pool.createChoice(exp,newRule); } public Object visit( RELAXExpressionVisitor visitor ) { return visitor.onElementRules(this); } public Expression visit( RELAXExpressionVisitorExpression visitor ) { return visitor.onElementRules(this); } public boolean visit( RELAXExpressionVisitorBoolean visitor ) { return visitor.onElementRules(this); } public void visit( RELAXExpressionVisitorVoid visitor ) { visitor.onElementRules(this); } /** * a flag that indicates this elementRule is exported and * therefore accessible from other modules. */ public boolean exported = false; public boolean isExported() { return exported; } /** RELAXModule object to which this object belongs */ public final RELAXModule ownerModule; }