| java.lang.Object org.jacorb.idl.lexer
lexer | public class lexer (Code) | | This class implements a scanner (aka lexical analyzer or
lexer) for IDL. The scanner reads characters from a global input
stream and returns integers corresponding to the terminal number
of the next token. Once the end of input is reached the EOF token
is returned on every subsequent call.
All symbol constants are defined in sym.java which is generated by
JavaCup from parser.cup.
In addition to the scanner proper (called first via init() then
with next_token() to get each token) this class provides simple
error and warning routines and keeps a count of errors and
warnings that is publicly accessible. It also provides basic
preprocessing facilties, i.e. it does handle preprocessor
directives such as #define, #undef, #include, etc. although it
does not provide full C++ preprocessing
This class is "static" (i.e., it has only static members and methods).
version: $Id: lexer.java,v 1.53 2006/10/13 19:56:48 andre.spiegel Exp $ author: Gerald Brose |
EOF_CHAR | final protected static int EOF_CHAR(Code) | | EOF constant.
|
char_symbols | protected static Hashtable char_symbols(Code) | | Table of single character symbols. For ease of implementation, we
store all unambiguous single character tokens in this table of Integer
objects keyed by Integer objects with the numerical value of the
appropriate char (currently Character objects have a bug which precludes
their use in tables).
|
conditionalCompilation | protected static boolean conditionalCompilation(Code) | | |
currentFile | public static String currentFile(Code) | | current file name
|
currentPragmaPrefix | public static String currentPragmaPrefix(Code) | | currently active pragma prefix
|
current_line | protected static int current_line(Code) | | Current line number for use in error messages.
|
current_position | protected static int current_position(Code) | | Character position in current line.
|
defines | protected static Hashtable defines(Code) | | Defined symbols (preprocessor)
|
error_count | static int error_count(Code) | | Count of total errors detected so far.
|
in_string | protected static boolean in_string(Code) | | Have we already read a '"' ?
|
java_keywords | protected static Hashtable java_keywords(Code) | | Table of Java reserved names.
|
keywords | protected static Hashtable keywords(Code) | | Table of keywords. Keywords are initially treated as
identifiers. Just before they are returned we look them up in
this table to see if they match one of the keywords. The
string of the name is the key here, which indexes Integer
objects holding the symbol number.
|
keywords_lower_case | protected static Hashtable keywords_lower_case(Code) | | Table of keywords, stored in lower case. Keys are the
lower case version of the keywords used as keys for the keywords
hash above, and the values are the case sensitive versions of
the keywords. This table is used for detecting collisions of
identifiers with keywords.
|
next_char | protected static int next_char(Code) | | First and second character of lookahead.
|
next_char2 | protected static int next_char2(Code) | | |
warning_count | public static int warning_count(Code) | | Count of warnings issued so far
|
wide | protected static boolean wide(Code) | | Are we processing a wide char or string ?
|
advance | protected static void advance() throws java.io.IOException(Code) | | Advance the scanner one character in the input stream. This moves
next_char2 to next_char and then reads a new next_char2.
|
checkIdentifier | public static String checkIdentifier(String str)(Code) | | Checks whether Identifier str is legal and returns it. If the
identifier is escaped with a leading underscore, that
underscore is removed. If a the legal IDL identifier clashes
with a Java reserved word, an underscore is prepended.
Parameters: str - - the IDL identifier
Prints an error msg if the identifier collides with an IDLkeyword. |
currentLine | public static int currentLine()(Code) | | record information about the last lexical scope so that it can be
restored later
|
do_symbol | protected static token do_symbol() throws java.io.IOException(Code) | | Process an identifier.
Identifiers begin with a letter, underscore, or dollar sign,
which is followed by zero or more letters, numbers,
underscores or dollar signs. This routine returns a str_token
suitable for return by the scanner or null, if the string that
was read expanded to a symbol that was #defined. In this case,
the symbol is expanded in place
|
emit_error | public static void emit_error(String message)(Code) | | Emit an error message. The message will be marked with both the
current line number and the position in the line. Error messages
are printed on standard error (System.err).
Parameters: message - the message to print. |
emit_warn | public static void emit_warn(String message)(Code) | | Emit a warning message. The message will be marked with both the
current line number and the position in the line. Messages are
printed on standard error (System.err).
Parameters: message - the message to print. |
find_single_char | protected static int find_single_char(int ch)(Code) | | Try to look up a single character symbol, returns -1 for not found.
Parameters: ch - the character in question. |
getPosition | public static PositionInfo getPosition()(Code) | | return the current reading position
|
id_char | protected static boolean id_char(int ch)(Code) | | Determine if a character is ok for the middle of an id.
Parameters: ch - the character in question. |
id_start_char | protected static boolean id_start_char(int ch)(Code) | | Determine if a character is ok to start an id.
Parameters: ch - the character in question. |
init | public static void init() throws java.io.IOException(Code) | | Initialize the scanner. This sets up the keywords and char_symbols
tables and reads the first two characters of lookahead.
"Object" is listed as reserved in the OMG spec.
"int" is not, but I reserved it to bar its usage as a legal integer
type.
|
isDigit | static boolean isDigit(char c)(Code) | | Returns true if character is US ASCII 0-9
Parameters: c - a value of type 'char' a value of type 'boolean' |
needsJavaEscape | public static boolean needsJavaEscape(Module m)(Code) | | |
next_token | public static token next_token() throws java.io.IOException(Code) | | Return one token. This is the main external interface to the scanner.
It consumes sufficient characters to determine the next input token
and returns it.
|
reset | public static void reset()(Code) | | reset the scanner state
|
strictJavaEscapeCheck | public static boolean strictJavaEscapeCheck(String s)(Code) | | called during the parse phase to catch clashes with
Java reserved words.
|
swallow_comment | protected static void swallow_comment() throws java.io.IOException(Code) | | Handle swallowing up a comment. Both old style C and new style C++
comments are handled.
|
|
|