/** 
 * Token - object returned by Tokenizer
 */

class Token {
    // constants for type field
    public final static int WORD=1;
    public final static int NUM=2;
    public final static int STRING=4;
    public final static int OP=5;

    private int type;
    private String sval;
    private char quoteChar;   // for type STRING
    private long nval;
    
    public Token(String s){
	type = WORD;
	sval = s;
    }
    public Token(String s, char c){
	type = STRING;
	sval = s;
	quoteChar = c;
    }
    public Token(long v) {
	type = NUM;
	nval = v;
	sval = String.valueOf(v);
    }

    public Token(char c) {
	type = OP;
	sval = String.valueOf(c);
    }

    /**
     * access functions:  type, sval, nval
     */

    public int getType() {
	return type;
    }
    public String getSval() {
	return sval;
    }
    public long getNval() {
	// check if number?
	return nval;
    }
    
    public String toString(){
	if (type == STRING){
	    // returned quoted string
	    String qc = String.valueOf(quoteChar);
	    return "Type " + type + ": " + qc + sval + qc;
	}
	else
	    return "Type " + type + ": " + sval;
    }
}

