class Token                    // plc/Wren/Token.java
{
    public static final int 
        PROGRAM=0, IS=1, BEGIN=2, END=3, VAR=4, INTEGER=5, BOOLEAN=6, 
        READ=7, WRITE=8, SKIP=9, WHILE=10, DO=11, IF=12, THEN=13, ELSE=14, 
        AND=15, OR=16, TRUE=17, FALSE=18, NOT=19, 
        PLUS=20, MINUS=21, TIMES=22, DIVIDES=23, 
	ASSIGN=24, LPAREN=25, RPAREN=26, 
        COMMA=27, SEMICOLON=28, COLON=29, 
	GT=30, GE=31, LT=32, LE=33, EQ=34, NE=35,
        EOF=36, ERROR=37, NUM=38, IDE=39;

    private static final String [] rWords =
      { "PROGRAM", "IS", "BEGIN", "END", "VAR", "INTEGER", "BOOLEAN",
        "READ", "WRITE", "SKIP", "WHILE", "DO", "IF", "THEN", "ELSE",
        "AND", "OR", "TRUE", "FALSE", "NOT",
        "PLUS", "MINUS", "TIMES", "DIVIDES", "ASSIGN", "LPAREN", "RPAREN", 
        "COMMA", "SEMICOLON", "COLON", "GT", "GE", "LT", "LE", "EQ", "NE", 
        "EOF", "ERROR", "NUM", "IDE" };

    private static final String SPACES =
    "                                                                   ";

    private int kind; 
    private String value;      // Token value

    public Token(int k, String v)
    {  kind = k;  value = v;  }

    public int getKind()
    {  return kind;  }

    public String getValue()
    {  return value;  }

    public String toString()
    {  return rWords[kind];  }

    public static String token(int tok)
    {   if (0<=tok && tok<rWords.length)
          return rWords[tok];
        else
          return "Error";
    }

    public static String spaces(int n)
    {  return SPACES.substring(0,n);  }
} 

