001    /* Copyright 2000, 2001, Compaq Computer Corporation */
002    
003    package escjava.parser;
004    
005    import javafe.parser.PragmaParser;
006    import javafe.parser.Token;
007    
008    import javafe.util.Location;
009    import javafe.util.CorrelatedReader;
010    import javafe.util.ErrorSet;
011    
012    import java.io.IOException;
013    
014    /**
015     * This class produces a {@link PragmaParser} that reports an
016     * client-chosen error message each time an annotation comment is
017     * encountered.  (Javadoc comments are also considered annotations.)
018     */
019    
020    public class ErrorPragmaParser implements PragmaParser
021    {
022        /** The error message to report. */
023        public String msg;
024    
025        /** Create a new ErrorPragmaParser that report error message msg. */
026        public ErrorPragmaParser(String msg) {
027            this.msg = msg;
028        }
029    
030        /** We consider both ESC and Javadoc comments to be annotations. */
031        public boolean checkTag(int tag) {
032          return tag == '@' || tag == '*';
033        }
034    
035        /** Report an error for each annotation comment **/
036        public void restart(CorrelatedReader in, boolean eolComment) {
037            try {
038                in.read();
039            } catch (IOException e) {
040                ErrorSet.fatal(in.getLocation(), e.toString());
041            }
042    
043            ErrorSet.error(in.getLocation(), msg);
044        }
045    
046        /** Produce no actual pragmas. */
047        public boolean getNextPragma(Token dst) { return false; }
048    
049        /** No work to close us. */
050        public void close() {}
051    
052        public javafe.ast.FieldDecl isPragmaDecl(javafe.parser.Token l) { return null; }
053    
054    } // end of class ErrorPragmaParser
055    
056    /*
057     * Local Variables:
058     * Mode: Java
059     * fill-column: 85
060     * End:
061     */