protected Expression castExpression( Expression exp, Expression child ) { // first one. if( exp==null ) return child; return reader.pool.createSequence(exp,child); }
protected Expression castExpression( Expression exp, Expression child ) { // first one. if( exp==null ) return child; return reader.pool.createSequence(exp,child); }
/** * combines the base type content model and this content model */ protected Expression combineToBaseType( ComplexTypeExp baseType, Expression addedExp ) { if( extension ) return reader.pool.createSequence( baseType.body, addedExp ); else return addedExp; } }
public ElementRule( ExpressionPool pool, TagClause clause, Expression contentModel ) { super( pool.createSequence(clause,contentModel), true ); this.clause = clause; this.attributeFreeContentModel = contentModel; }
/** * combines the base type content model and this content model */ protected Expression combineToBaseType( ComplexTypeExp baseType, Expression addedExp ) { if( extension ) return reader.pool.createSequence( baseType.body, addedExp ); else return addedExp; } }
protected Expression castExpression( Expression halfCastedExpression, Expression newChildExpression ) { if( halfCastedExpression==null ) return newChildExpression; // the first one // only the first one contains element. // the rest consists of attributes. // so this order of parameters is fine. return reader.pool.createSequence( newChildExpression, halfCastedExpression ); }
/** receives a Pattern object that is contained in this element. */ public final void onEndChild( Expression child ) { if( exp==null ) { // first one. exp = child; } else { exp = reader.pool.createSequence(exp,child); } }
public Expression onSequence( SequenceExp exp ) { // if( isAttributeFree(exp) ) return Expression.nullSet; // for attributes only, sequence acts as orderless return pool.createChoice( pool.createSequence( exp.exp1.visit(this), exp.exp2 ), pool.createSequence( exp.exp1, exp.exp2.visit(this) ) ); } public Expression onData( DataExp exp ) {
public Expression onSequence( SequenceExp exp ) { // if( isAttributeFree(exp) ) return Expression.nullSet; // for attributes only, sequence acts as orderless return pool.createChoice( pool.createSequence( exp.exp1.visit(this), exp.exp2 ), pool.createSequence( exp.exp1, exp.exp2.visit(this) ) ); } public Expression onData( DataExp exp ) {
public Expression onSequence( SequenceExp exp ) { // if( isAttributeFree(exp) ) return Expression.nullSet; // for attributes only, sequence acts as orderless return pool.createChoice( pool.createSequence( exp.exp1.visit(this), exp.exp2 ), pool.createSequence( exp.exp1, exp.exp2.visit(this) ) ); } public Expression onData( DataExp exp ) {
public Expression onSequence( SequenceExp exp ) { Expression np1 = exp.exp1.visit(this); Expression np2 = exp.exp2.visit(this); if(exp.exp1==np1 && exp.exp2==np2) return exp; else return pool.createSequence(np1,np2); } public Expression onConcur( ConcurExp exp ) {
protected Expression annealExpression( Expression exp ) { parentDecl.derivationMethod = ComplexTypeExp.EXTENSION; return reader.pool.createSequence( super.annealExpression(exp), getBody()); }
public Expression onSequence( SequenceExp exp ) { Expression np1 = exp.exp1.visit(this); Expression np2 = exp.exp2.visit(this); if(exp.exp1==np1 && exp.exp2==np2) return exp; else return pool.createSequence(np1,np2); } public Expression onConcur( ConcurExp exp ) {
public Expression onOneOrMore( OneOrMoreExp exp ) { return pool.createSequence( exp.exp.visit(this), pool.createZeroOrMore(exp.exp) ); } public Expression onMixed( MixedExp exp ) {
protected Expression annealExpression( Expression exp ) { parentDecl.derivationMethod = ComplexTypeExp.EXTENSION; return reader.pool.createSequence( super.annealExpression(exp), getBody()); }
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 ) {
public Expression onOneOrMore( OneOrMoreExp exp ) { return pool.createSequence( exp.exp.visit(this), pool.createZeroOrMore(exp.exp) ); } public Expression onMixed( MixedExp exp ) {
public void onOneOrMore(OneOrMoreExp exp) { exp.exp.visit(this); continuation = pool.createSequence(continuation, pool.createZeroOrMore(exp.exp)); } public void onMixed(MixedExp exp) {
public Expression onSequence( SequenceExp exp ) { Expression np1 = exp.exp1.visit(this); Expression np2 = exp.exp2.visit(this); if(exp.exp1==np1 && exp.exp2==np2) return exp; else return pool.createSequence(np1,np2); } public Expression onConcur( ConcurExp exp ) {
public Expression onSequence( SequenceExp exp ) { Expression r = pool.createSequence( exp.exp1.visit(this), exp.exp2 ); if( exp.exp1.isEpsilonReducible() ) return pool.createChoice( r, exp.exp2.visit(this) ); else return r; }