import Jakarta.util.*; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.PrintWriter; import java.io.Reader; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.io.Writer; import java.net.URI; import java.util.Hashtable; import java.util.List; import java.util.Stack; import java.util.EmptyStackException; import java.util.Vector; //************************************************** // Class AstOptToken //************************************************** public class AstOptToken extends AstNode implements AstTokenInterface { public AstOptToken() { setParms( null ); } public AstOptToken setParms( AstTokenInterface child ) { arg = new AstNode[1]; tok = new AstTokenInterface[1]; tok[0] = child; InitChildren(); return ( ( AstOptToken ) this ); } public boolean Equ( AstTokenInterface x ) { return ( this.tokenName().compareTo( x.tokenName() ) == 0 ); } public boolean[] printorder() { fatalError( "shouldn't call AstOptToken::printorder()" ); return null; } // Delete() deletes the token public void Delete() { tok[0] = null; } // Replace(w) does one of two things: if w is an instanceof AstOptToken // then replace the current node (which is an instance of AstOptToken) // with w using the generic Replace() method. Otherwise, replace // is undefined. public AstNode Replace( AstNode withnode ) { if ( withnode instanceof AstOptToken ) return ( super.Replace( withnode ) ); System.out.println( "AstNode::Replace - shouldn't be called" ); return ( withnode ); } // print(), reduce2java(), and reduce2ast() print/reduce optional nodes public void print( AstProperties props ) { if ( tok[0] != null ) tok[0].print( props ); } public void print() { if ( tok[0] != null ) tok[0].print(); } public void reduce2java( AstProperties props ) { if ( tok[0] != null ) { tok[0].reduce2java( props ); } } public String tokenName() { if ( tok[0] == null ) return ( "" ); return ( tok[0].tokenName() ); } public String getTokenName() { return tokenName(); } public void setTokenName( String replacement ) { tok[0] = new AstToken() ; ( ( AstToken ) tok [0] ) . setParms( "", replacement, 0 ) ; } public void printWhitespaceOnly( AstProperties props ) { if ( tok[0] != null ) tok[0].printWhitespaceOnly( props ); } //************************************************** // This method adds the comment given by the parameter to // the AstToken if it exists. //************************************************** public AstNode addComment( String comment ) { return ( addComment( comment, false ) ); } public AstNode addComment( String comment, boolean replace ) { if ( arg[0] == null ) return ( null ); return ( arg[0].addComment( comment, replace ) ); } }