/*
* @(#)$Id: RootIncludedPatternState.java,v 1.8 2001/07/26 20:43:22 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.reader.trex;
import com.sun.msv.util.StartTagInfo;
import com.sun.msv.grammar.Expression;
import com.sun.msv.grammar.trex.TREXGrammar;
import com.sun.msv.reader.State;
import com.sun.msv.reader.SimpleState;
import com.sun.msv.reader.ExpressionOwner;
/**
* parses the root state of a grammar included as a pattern.
*
* @author <a href="mailto:kohsuke.kawaguchi@eng.sun.com">Kohsuke KAWAGUCHI</a>
*/
public class RootIncludedPatternState extends SimpleState implements ExpressionOwner {
protected State createChildState( StartTagInfo tag ) {
// grammar has to be treated separately so as not to
// create unnecessary TREXGrammar object.
// if(tag.localName.equals("grammar"))
// return new GrammarState();
State s = reader.createExpressionChildState(this,tag);
// if(s!=null) {
// // other pattern element is specified.
// // create wrapper grammar
// final TREXBaseReader reader = (TREXBaseReader)this.reader;
// reader.grammar = new TREXGrammar( reader.pool, null );
// simple = true;
// }
return s;
}
/**
* parsed external pattern will be reported to this object.
* This state parses top-level, so parentState is null.
*/
private final IncludePatternState grandParent;
protected RootIncludedPatternState( IncludePatternState grandpa ) {
this.grandParent = grandpa;
}
public void onEndChild(Expression exp) {
if( grandParent!=null )
// this must be from grammar element. pass it to the IncludePatternState.
grandParent.onEndChild(exp);
}
}