import java.util.*; import Jakarta.util.*; import java.io.*; /********************* Kernel Classes ********************* * @layer<mixinbase> */ public abstract class AstNode { // tag all AstNodes with the name of their source layer public String _source = null; public void setSource( String s ) { int i; _source = s; if ( arg == null ) return; for ( i=0; i<arg.length; i++ ) if ( arg[i]!=null ) arg[i].setSource( s ); } public String getSource() { return _source; } // common routines for setting and getting tokenNames public String argTokenName( int argNumber ) { return arg[argNumber].tokenName( 0 ); } public void setArgTokenName( int argNumber, String value ) { arg[argNumber].setTokenName( 0,value ); } public String tokenName( int tokNumber ) { return tok[tokNumber].tokenName(); } public void setTokenName( int tokNumber, String value ) { ( ( AstToken ) tok[tokNumber] ).setName( value ); } // common routines for name mangling and unmangling public String mangleName( String name ) { return Util2.mangleId( name, _source ); } String originalName( String arg ) { int pos = arg.indexOf( "$$" ); if ( pos >= 0 ) return arg.substring( 0,pos ); else return arg; } public void compose( AstNode etree, JTSParseTree base, JTSParseTree ext ) { if ( arg == null ) return; for ( int i=0; i<arg.length; i++ ) if ( arg[i]!=null ) arg[i].compose( etree.arg[i], base, ext ); } public void prepare( JTSParseTree t ) { if ( arg == null ) return; for ( int i=0; i<arg.length; i++ ) if ( arg[i]!=null ) arg[i].prepare( t ); } }