|
CalculatorTokenizer.java
|
import java.io.*;
import java.util.Date;
import ilog.language.syntax.*;
import ilog.language.io.StreamTokenizer;
public class CalculatorTokenizer implements Tokenizer
{
BufferedReader reader;
StreamTokenizer input;
String file = "stdin";
CalculatorTokenizer () throws IOException
{
setReader(new InputStreamReader(System.in));
interactive = true;
banner();
prompt();
}
CalculatorTokenizer (File file) throws IOException
{
setReader(new FileReader(file));
interactive = false;
banner();
System.out.println("*** Parsing file: "+file);
}
CalculatorTokenizer (String s) throws IOException
{
setReader(new StringReader(s));
interactive = false;
}
public final int lineNumber()
{
return input.getLineNumber();
}
public final void setReader (Reader rd)
{
reader = new BufferedReader(rd);
input = new StreamTokenizer(reader);
input.ordinaryChars("+-/");
input.wordChars('_','_');
}
public final Reader getReader ()
{
return reader;
}
public static boolean interactive;
static String promptString = ">";
public static final void prompt()
{
System.out.print(promptString+" ");
}
static public final void setPrompt(String p)
{
promptString = p;
}
static String banner = "*** Welcome to the number calculator!\n"+
"*** Version of "+ (new Date());
public static final void banner ()
{
System.out.println(banner);
}
final ParseNode locate (ParseNode node)
{
return ((ParseNode)node.setStart(input.tokenStart).setEnd(input.tokenEnd))
.setFile(file);
}
public ParseNode nextToken() throws IOException
{
ParseNode t = null;
int token = input.nextToken();
switch (token)
{
case StreamTokenizer.TT_EOF:
reader.close();
t = GenericParser.E_O_I;
break;
case StreamTokenizer.TT_WORD:
if (input.sval == "exit")
t = GenericParser.literalToken("exit");
else
t = GenericParser.symbolToken("IDENTIFIER",input.sval);
break;
case StreamTokenizer.TT_NUMBER:
t = GenericParser.numberToken("NUMBER",input.nval);
break;
default:
char c = (char)token;
t = GenericParser.literalToken(String.valueOf(c));
break;
}
return locate(t);
}
}
This file was generated on Mon Dec 20 19:03:12 PST 2004 from file CalculatorTokenizer.java
by the ilog.language.tools.Hilite Java tool written by Hassan Aït-Kaci