62 lines
2.2 KiB
Java
62 lines
2.2 KiB
Java
Tokenizing Java Source Code
|
|
|
|
public static void main(String args[]){
|
|
try{
|
|
// Create the tokenizer to read from a file
|
|
FileReader rd = new FileReader("dd.java");
|
|
StreamTokenizer st = new StreamTokenizer(rd);
|
|
|
|
// Prepare the tokenizer for Java-style tokenizing rules
|
|
st.parseNumbers();
|
|
st.wordChars('_', '_');
|
|
st.eolIsSignificant(true);
|
|
|
|
// If whitespace is not to be discarded, make this call
|
|
st.ordinaryChars(0, ' ');
|
|
|
|
// These calls caused comments to be discarded
|
|
st.slashSlashComments(true);
|
|
st.slashStarComments(true);
|
|
|
|
// Parse the file
|
|
int token = st.nextToken();
|
|
while (token != StreamTokenizer.TT_EOF) {
|
|
token = st.nextToken();
|
|
System.out.println("----"+st);
|
|
switch (token) {
|
|
case StreamTokenizer.TT_NUMBER:
|
|
// A number was found; the value is in nval
|
|
double num = st.nval;
|
|
break;
|
|
case StreamTokenizer.TT_WORD:
|
|
// A word was found; the value is in sval
|
|
String word = st.sval;
|
|
break;
|
|
case '"':
|
|
// A double-quoted string was found; sval contains the contents
|
|
String dquoteVal = st.sval;
|
|
break;
|
|
case '\'':
|
|
// A single-quoted string was found; sval contains the contents
|
|
String squoteVal = st.sval;
|
|
break;
|
|
case StreamTokenizer.TT_EOL:
|
|
// End of line character found
|
|
break;
|
|
case StreamTokenizer.TT_EOF:
|
|
// End of file has been reached
|
|
break;
|
|
default:
|
|
// A regular character was found; the value is the token itself
|
|
char ch = (char)st.ttype;
|
|
break;
|
|
}
|
|
}
|
|
rd.close();
|
|
System.out.println(st);
|
|
}
|
|
catch (Exception ioe){
|
|
ioe.printStackTrace();
|
|
}
|
|
}
|