JFlexXref.java revision 1108
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* See LICENSE.txt included in this distribution for the specific
* language governing permissions and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at LICENSE.txt.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
*/
/**
* Base class for Xref lexers.
*
* @author Lubos Kosco
*/
public abstract class JFlexXref {
public Annotation annotation;
protected Definitions defs;
/** EOF value returned by yylex(). */
private final int yyeof;
protected JFlexXref() {
try {
// TODO when bug #16053 is fixed, we should add a getter to a file
// that's included from all the Xref classes so that we avoid the
// reflection.
} catch (Exception e) {
// The auto-generated constructors for the Xref classes don't
// expect a checked exception, so wrap it in an AssertionError.
// This should never happen, since all the Xref classes will get
// a public static YYEOF field from JFlex.
throw ae; // NOPMD (stack trace is preserved by initCause(), but PMD
// thinks it's lost)
}
}
/**
* Reinitialize the xref with new contents.
*
* @param contents a char buffer with text to analyze
* @param length the number of characters to use from the char buffer
*/
annotation = null;
}
}
protected void appendProject() throws IOException {
}
}
protected String getProjectPostfix() {
}
/** Get the next token from the scanner. */
public abstract int yylex() throws IOException;
/** Reset the scanner. */
/** Get the value of {@code yyline}. */
protected abstract int getLineNumber();
/** Set the value of {@code yyline}. */
protected abstract void setLineNumber(int x);
/**
* Write xref to the specified {@code Writer}.
*
* @param out xref destination
* @throws IOException on error when writing the xref
*/
setLineNumber(0);
startNewLine();
// nothing to do here, yylex() will do the work
}
}
/**
* Terminate the current line and insert preamble for the next line. The
* line count will be incremented.
*
* @throws IOException on error when writing the xref
*/
protected void startNewLine() throws IOException {
}
/**
* Write a symbol and generate links as appropriate.
*
* @param symbol the symbol to write
* @param keywords a set of keywords recognized by this analyzer (no links
* will be generated if the symbol is a keyword)
* @param line the line number on which the symbol appears
* @throws IOException if an error occurs while writing to the stream
*/
throws IOException {
// This is a keyword, so we don't create a link.
// This is the definition of the symbol.
style_class = "xm";
}
style_class = "xa";
}
style_class = "xl";
}
style_class = "xv";
}
style_class = "xc";
}
style_class = "xi";
}
style_class = "xn";
}
style_class = "xe";
}
style_class = "xer";
}
style_class = "xs";
}
style_class = "xt";
}
style_class = "xts";
}
style_class = "xu";
}
style_class = "xfld";
}
style_class = "xmb";
}
style_class = "xf";
}
style_class = "xmt";
}
style_class = "xsr";
}
// 1) Create an anchor for direct links. (Perhaps, we should only
// do this when there's exactly one definition of the symbol in
// this file? Otherwise, we may end up with multiple anchors with
// the same name.)
// 2) Create a link that searches for all references to this symbol.
// May have multiple anchors with the same function name,
// store line number for accurate location used in list.jsp.
// This is a reference to a symbol defined exactly once in this file.
// Generate a direct link to the symbol definition.
} else {
// This is a symbol that is not defined in this file, or a symbol
// that is defined more than once in this file. In either case, we
// can't generate a direct link to the definition, so generate a
// link to search for all definitions of that symbol instead.
}
}
/**
* Write HTML escape sequence for the specified Unicode character, unless
* it's an ISO control character, in which case it is ignored.
*
* @param c the character to write
* @throws IOException if an error occurs while writing to the stream
*/
protected void writeUnicodeChar(char c) throws IOException {
if (!Character.isISOControl(c)) {
}
}
}