
34 An Introduction to Compiler Construction in a Java World
The code corresponding to this logic would look something like the following:
if ( isLetter ( ch ) || ch == ’_’ || ch == ’$ ’) {
buffer = new String B u ffer ();
while ( isLet t e r ( ch ) || i s Digit ( ch ) ||
ch == ’_ ’ || ch == ’$ ’){
buffer . append ( ch );
nextCh ();
}
String identi f i e r = buffer . toString ();
if ( reserved . contai n s K ey ( identi f i e r )) {
return new T o kenInfo ( reserved . get ( i dentifier ),
line );
}
else {
return new T o kenInfo ( IDENTIFI ER , identifier ,
line );
}
}
This relies on a map (hash table), reserved, mapping reserved identifiers to their rep-
resentations: ...