/** * Returns the base pattern from the forall CE * @return */ public PatternDescr getBasePattern() { if ( this.patterns.size() > 1 ) { return (PatternDescr) this.patterns.get( 0 ); } else if ( this.patterns.size() == 1 ) { // in case there is only one pattern, we do a rewrite, so: // forall( Cheese( type == "stilton" ) ) // becomes // forall( BASE_IDENTIFIER : Cheese() Cheese( this == BASE_IDENTIFIER, type == "stilton" ) ) PatternDescr original = (PatternDescr) this.patterns.get( 0 ); PatternDescr base = (PatternDescr) original.clone(); base.getDescrs().clear(); base.setIdentifier( BASE_IDENTIFIER ); return base; } return null; }
public void visitPatternDescr(final PatternDescr descr) { this.patternContext = true; this.template = new String(); StringBuilder localString = new StringBuilder(); if ( descr.getDescrs() != Collections.EMPTY_LIST ) { if ( descr.getIdentifier() != null ) { localString.append( "<pattern identifier=\"" + descr.getIdentifier() + "\" object-type=\"" + descr.getObjectType() + "\" >" + XmlDumper.eol + processDescrList( descr.getDescrs() ) + XmlDumper.eol ); } else { localString.append( "<pattern object-type=\"" + descr.getObjectType() + "\" >" + XmlDumper.eol + processDescrList( descr.getDescrs() ) + XmlDumper.eol ); } } else { if ( descr.getIdentifier() != null ) { localString.append( "<pattern identifier=\"" + descr.getIdentifier() + "\" object-type=\"" + descr.getObjectType() + "\" >" + XmlDumper.eol );; } else { localString.append( "<pattern object-type=\"" + descr.getObjectType() + "\" >" + XmlDumper.eol ); } } if ( descr.getSource() != null ) { visit( descr.getSource() ); localString.append( this.template ); } localString.append( "</pattern>" + XmlDumper.eol ); this.template = localString.toString(); this.patternContext = false; }
List<BaseDescr> args = (List<BaseDescr>) patternDescr.getDescrs(); List<Integer> declrIndexes = new ArrayList<Integer>(); List<Integer> varIndexes = new ArrayList<Integer>();
for ( BaseDescr b : patternDescr.getDescrs() ) { String expression; boolean isPositional = false;
public Object clone() { PatternDescr clone = new PatternDescr( this.objectType, this.identifier ); clone.setQuery( this.query ); clone.setUnification( unification ); clone.setLeftParentCharacter( this.leftParentCharacter ); clone.setRightParentCharacter( this.rightParentCharacter ); clone.setSource( this.source ); clone.setStartCharacter( this.getStartCharacter() ); clone.setEndCharacter( this.getEndCharacter() ); clone.setLocation( this.getLine(), this.getColumn() ); clone.setEndLocation( this.getEndLine(), this.getEndColumn() ); clone.setText( this.getText() ); for ( BaseDescr constraint : this.getDescrs() ) { clone.addConstraint( constraint ); } if ( behaviors != null ) { for ( BehaviorDescr behavior : behaviors ) { clone.addBehavior( behavior ); } } return clone; }