public Expression onInterleave( InterleaveExp exp ) { return pool.createChoice( pool.createInterleave( exp.exp1.visit(this), exp.exp2 ), pool.createInterleave( exp.exp1, exp.exp2.visit(this) ) ); }
public XMLSchemaReader( GrammarReaderController controller, SAXParserFactory parserFactory ) { this( controller, parserFactory, new ExpressionPool() ); }
/** * Allows the derived class to change it. */ protected Expression createAttribute( NameClass nc, Expression exp ) { return reader.pool.createAttribute(nc,exp); }
/** * processes occurence (?,+,*) of the given expression */ protected Expression processOccurs( Expression item, short occurence ) { switch( occurence ) { case OCCURENCE_ONCE: return item; case OCCURENCE_ONE_OR_MORE: return grammar.pool.createOneOrMore(item); case OCCURENCE_ZERO_OR_MORE: return grammar.pool.createZeroOrMore(item); case OCCURENCE_ZERO_OR_ONE: return grammar.pool.createOptional(item); default: // assertion failed. this must be a bug of DTDScanner. throw new Error(); } }
public final Expression createInterleave( Expression left, Expression right ) { if( left == Expression.epsilon ) return right; if( right== Expression.epsilon ) return left; if( left == Expression.nullSet || right== Expression.nullSet ) return Expression.nullSet; // associative operators are grouped to the left if( right instanceof InterleaveExp ) { final InterleaveExp i = (InterleaveExp)right; return createInterleave( createInterleave(left, i.exp1), i.exp2 ); } return unify(new InterleaveExp(left,right)); }
public void onOneOrMore(OneOrMoreExp exp) { exp.exp.visit(this); continuation = pool.createSequence(continuation, pool.createZeroOrMore(exp.exp)); } public void onMixed(MixedExp exp) {
protected Expression castExpression( Expression exp, Expression child ) { // first one. if( exp==null ) return child; else return reader.pool.createChoice(exp,child); } }
/** Creates this object from existing XSDatatype. */ public XSDatatypeExp( XSDatatype dt, ExpressionPool _pool ) { super(dt.getName()); this.namespaceUri = dt.getNamespaceUri(); this.dt = dt; this.pool = _pool; this.ownerState = null; this.renderer = null; super.exp = _pool.createData(dt); }
protected Expression castExpression( Expression exp, Expression child ) { // first one. if( exp==null ) return child; return reader.pool.createConcur(exp,child); } }
protected Expression annealExpression( Expression exp ) { return reader.pool.createMixed(exp); } }
protected Expression annealExpression( Expression exp ) { return reader.pool.createList(exp); } }
protected Expression annealExpression( Expression exp ) { return reader.pool.createOneOrMore(exp); } }
protected Expression castExpression( Expression exp, Expression child ) { // first one. if( exp==null ) return child; return reader.pool.createInterleave(exp,child); } }
public Expression onOneOrMore( OneOrMoreExp exp ) { // if( isAttributeFree(exp) ) return Expression.nullSet; return pool.createSequence( exp.exp.visit(this), pool.createZeroOrMore(exp.exp) ); } public Expression onMixed( MixedExp exp ) {
private final Expression mergeContinuation( Expression exp1, Expression exp2 ) { if(exp1==null && exp2==null) return null; if(exp1==null || exp1==Expression.nullSet) return exp2; if(exp2==null || exp2==Expression.nullSet) return exp1; return docDecl.pool.createChoice(exp1,exp2); }
/** * processes occurence (?,+,*) of the given expression */ protected Expression processOccurs( Expression item, short occurence ) { switch( occurence ) { case OCCURENCE_ONCE: return item; case OCCURENCE_ONE_OR_MORE: return grammar.pool.createOneOrMore(item); case OCCURENCE_ZERO_OR_MORE: return grammar.pool.createZeroOrMore(item); case OCCURENCE_ZERO_OR_ONE: return grammar.pool.createOptional(item); default: // assertion failed. this must be a bug of DTDScanner. throw new Error(); } }
/** Creates this object from existing XSDatatype. */ public XSDatatypeExp( XSDatatype dt, ExpressionPool _pool ) { super(dt.getName()); this.namespaceUri = dt.getNamespaceUri(); this.dt = dt; this.pool = _pool; this.ownerState = null; this.renderer = null; super.exp = _pool.createData(dt); }
public final Expression createInterleave( Expression left, Expression right ) { if( left == Expression.epsilon ) return right; if( right== Expression.epsilon ) return left; if( left == Expression.nullSet || right== Expression.nullSet ) return Expression.nullSet; // associative operators are grouped to the left if( right instanceof InterleaveExp ) { final InterleaveExp i = (InterleaveExp)right; return createInterleave( createInterleave(left, i.exp1), i.exp2 ); } return unify(new InterleaveExp(left,right)); }
protected Expression castExpression( Expression exp, Expression child ) { // first one. if( exp==null ) return child; return reader.pool.createConcur(exp,child); } }
protected Expression annealExpression( Expression exp ) { return reader.pool.createMixed(exp); } }