package parser.ServletParser.sqllex;

import parser.ServletParser.sqlparse.Sym;
import java_cup.runtime.Symbol;
import java.util.Hashtable;

class Keyword extends Token {
  String keyword;
  String upper;
  Keyword(String s) { 
	keyword = s; 
	upper = s.toUpperCase();
  }

  Symbol token() {
    Integer i = (Integer) key_table.get(upper);
    return new Symbol(i.intValue(),keyword);
  }
  public String toString() { return "Keyword <"+keyword+">"; }

  static private final Hashtable key_table = new Hashtable();
  static {
	key_table.put("ALL", new Integer(Sym.ALL));
    key_table.put("AND", new Integer(Sym.AND));
    key_table.put("AS", new Integer(Sym.AS));
    key_table.put("ASC", new Integer(Sym.ASC));
    key_table.put("AVG", new Integer(Sym.AVG));
    key_table.put("BETWEEN", new Integer(Sym.BETWEEN));
    key_table.put("BOTH", new Integer(Sym.BOTH));
    key_table.put("BY", new Integer(Sym.BY));
//    key_table.put("CASCADE", new Integer(Sym.CASCADE));
    key_table.put("COUNT", new Integer(Sym.COUNT));
    key_table.put("CROSS", new Integer(Sym.CROSS));
    key_table.put("DEFAULT", new Integer(Sym.DEFAULT));
    key_table.put("DELETE", new Integer(Sym.DELETE));
    key_table.put("DESC", new Integer(Sym.DESC));
    key_table.put("DISTINCT", new Integer(Sym.DISTINCT));
    key_table.put("ESCAPE", new Integer(Sym.ESCAPE));
//    key_table.put("EXISTS", new Integer(Sym.EXISTS));
    key_table.put("FALSE", new Integer(Sym.FALSE));
    key_table.put("FOR", new Integer(Sym.FOR));
    key_table.put("FROM", new Integer(Sym.FROM));
    key_table.put("GROUP", new Integer(Sym.GROUP));
    key_table.put("GLOBAL", new Integer(Sym.GLOBAL));
    key_table.put("HAVING", new Integer(Sym.HAVING));
    key_table.put("IGNORE", new Integer(Sym.IGNORE));
    key_table.put("IN", new Integer(Sym.IN));
    key_table.put("INNER", new Integer(Sym.INNER));
    key_table.put("INSERT", new Integer(Sym.INSERT));
//    key_table.put("INTERSECT", new Integer(Sym.INTERSECT));
//    key_table.put("INTERVAL", new Integer(Sym.INTERVAL));
    key_table.put("INTO", new Integer(Sym.INTO));
    key_table.put("IS", new Integer(Sym.IS));
    key_table.put("JOIN", new Integer(Sym.JOIN));
    key_table.put("LEADING", new Integer(Sym.LEADING));
    key_table.put("LEFT", new Integer(Sym.LEFT));
    key_table.put("LIKE", new Integer(Sym.LIKE));
    key_table.put("LIMIT", new Integer(Sym.LIMIT));
    key_table.put("LOCAL", new Integer(Sym.LOCAL));
    key_table.put("MAX", new Integer(Sym.MAX));
    key_table.put("MIN", new Integer(Sym.MIN));
//    key_table.put("NATIONAL", new Integer(Sym.NATIONAL));
    key_table.put("NATURAL", new Integer(Sym.NATURAL));
    key_table.put("NOT", new Integer(Sym.NOT));
    key_table.put("NULL", new Integer(Sym.NULL));
    key_table.put("OFFSET", new Integer(Sym.OFFSET));
    key_table.put("ON", new Integer(Sym.ON));
    key_table.put("OR", new Integer(Sym.OR));
    key_table.put("ORDER", new Integer(Sym.ORDER));
    key_table.put("OUTER", new Integer(Sym.OUTER));
    key_table.put("RIGHT", new Integer(Sym.RIGHT));
    key_table.put("SELECT", new Integer(Sym.SELECT));
    key_table.put("SESSION", new Integer(Sym.SESSION));
    key_table.put("SET", new Integer(Sym.SET));
    key_table.put("SUM", new Integer(Sym.SUM));
    key_table.put("TRAILING", new Integer(Sym.TRAILING));
    key_table.put("TRIM", new Integer(Sym.TRIM));
    key_table.put("TRUE", new Integer(Sym.TRUE));
    key_table.put("UNION", new Integer(Sym.UNION));
//    key_table.put("UNIQUE", new Integer(Sym.UNIQUE));
    key_table.put("UPDATE", new Integer(Sym.UPDATE));
    key_table.put("USING", new Integer(Sym.USING));
    key_table.put("VALUES", new Integer(Sym.VALUES));
    key_table.put("WHERE", new Integer(Sym.WHERE));
  }
}
