import java.util.*; import java.io.*; //------------CompSm Layer ------------ public class ESList { public void harvestAst( LinkedList ll ) { // foreach element on an ESList, invoke harvestAst AstCursor c = new AstCursor(); for ( c.FirstElement( this ); c.MoreElement(); c.NextElement() ) { ( ( Es ) c.node ).harvestAst( ll ); } } public void add2Hash( Hashtable h, String source ) { // foreach element on an ESList, enter an element into the // hash table and note any replications when replications are // errors -- i.e., base defines edge x and refinement defines // edge x too is an error. AstCursor c = new AstCursor(); for ( c.FirstElement( this ); c.MoreElement(); c.NextElement() ) { Es es = ( Es ) c.node; es.add2Hash( h, source ); } } public void compose( AstNode etree ) { // composition is simple -- just concatenate the ESList of the // base to the ESList of the extension ESList e = ( ESList ) etree; add( e ); // formerly addHead -- original definitions come first } }