|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.jacorb.idl.lexer
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).
Field Summary | |
protected static java.util.Hashtable |
char_symbols
Table of single character symbols. |
protected static boolean |
conditionalCompilation
|
protected static int |
current_line
Current line number for use in error messages. |
protected static int |
current_position
Character position in current line. |
static java.lang.String |
currentFile
current file name |
static java.lang.String |
currentPragmaPrefix
currently active pragma prefix |
protected static java.util.Hashtable |
defines
Defined symbols (preprocessor) |
protected static int |
EOF_CHAR
EOF constant. |
protected static boolean |
in_string
Have we already read a '"' ? |
protected static java.util.Hashtable |
java_keywords
Table of Java reserved names. |
protected static java.util.Hashtable |
keywords
Table of keywords. |
protected static java.util.Hashtable |
keywords_lower_case
Table of keywords, stored in lower case. |
protected static java.lang.StringBuffer |
line
Current line for use in error messages. |
protected static int |
next_char
First and second character of lookahead. |
protected static int |
next_char2
|
static int |
warning_count
Count of warnings issued so far |
protected static boolean |
wide
Are we processing a wide char or string ? |
Constructor Summary | |
lexer()
|
Method Summary | |
protected static void |
advance()
Advance the scanner one character in the input stream. |
static java.lang.String |
checkIdentifier(java.lang.String str)
Checks whether Identifier str is legal and returns it. |
static int |
currentLine()
record information about the last lexical scope so that it can be restored later |
static void |
define(java.lang.String symbol,
java.lang.String value)
|
static java.lang.String |
defined(java.lang.String symbol)
|
protected static token |
do_symbol()
Process an identifier. |
static void |
emit_error(java.lang.String message)
Emit an error message. |
static void |
emit_error(java.lang.String message,
str_token t)
|
static void |
emit_warn(java.lang.String message)
Emit a warning message. |
static void |
emit_warn(java.lang.String message,
str_token t)
|
protected static int |
find_single_char(int ch)
Try to look up a single character symbol, returns -1 for not found. |
static PositionInfo |
getPosition()
return the current reading position |
protected static boolean |
id_char(int ch)
Determine if a character is ok for the middle of an id. |
protected static boolean |
id_start_char(int ch)
Determine if a character is ok to start an id. |
static void |
init()
Initialize the scanner. |
static boolean |
needsJavaEscape(Module m)
|
static token |
next_token()
Return one token. |
protected static void |
preprocess()
Preprocessor directives are handled here. |
protected static token |
real_next_token()
The actual routine to return one token. |
static void |
reset()
reset the scanner state |
static void |
restorePosition(PositionInfo p)
|
static boolean |
strictJavaEscapeCheck(java.lang.String s)
called during the parse phase to catch clashes with Java reserved words. |
protected static void |
swallow_comment()
Handle swallowing up a comment. |
static void |
undefine(java.lang.String symbol)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected static int next_char
protected static int next_char2
protected static final int EOF_CHAR
protected static java.util.Hashtable keywords
protected static java.util.Hashtable keywords_lower_case
protected static java.util.Hashtable java_keywords
protected static java.util.Hashtable char_symbols
protected static java.util.Hashtable defines
protected static boolean conditionalCompilation
protected static int current_line
protected static java.lang.StringBuffer line
protected static int current_position
protected static boolean in_string
protected static boolean wide
public static int warning_count
public static java.lang.String currentPragmaPrefix
public static java.lang.String currentFile
Constructor Detail |
public lexer()
Method Detail |
public static void reset()
public static void init() throws java.io.IOException
java.io.IOException
public static void define(java.lang.String symbol, java.lang.String value)
public static void undefine(java.lang.String symbol)
public static java.lang.String defined(java.lang.String symbol)
public static int currentLine()
public static PositionInfo getPosition()
public static void restorePosition(PositionInfo p)
protected static void advance() throws java.io.IOException
java.io.IOException
public static void emit_error(java.lang.String message)
message
- the message to print.public static void emit_error(java.lang.String message, str_token t)
public static void emit_warn(java.lang.String message)
message
- the message to print.public static void emit_warn(java.lang.String message, str_token t)
protected static boolean id_start_char(int ch)
ch
- the character in question.protected static boolean id_char(int ch)
ch
- the character in question.protected static int find_single_char(int ch)
ch
- the character in question.protected static void swallow_comment() throws java.io.IOException
java.io.IOException
protected static void preprocess() throws java.io.IOException
java.io.IOException
protected static token do_symbol() throws java.io.IOException
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
java.io.IOException
public static java.lang.String checkIdentifier(java.lang.String str)
str
- - the IDL identifier public static boolean strictJavaEscapeCheck(java.lang.String s)
public static boolean needsJavaEscape(Module m)
public static token next_token() throws java.io.IOException
java.io.IOException
protected static token real_next_token() throws java.io.IOException
java.io.IOException
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |