package org.apache.lucene.queryparser.flexible.aqp.util; import java.util.HashMap; import java.util.Map; import org.antlr.runtime.Token; import org.antlr.runtime.tree.CommonTreeAdaptor; public class AqpCommonTreeAdaptor extends CommonTreeAdaptor { private Map<Integer, String> typeToNameMap; public AqpCommonTreeAdaptor(String[] tokenNames) { typeToNameMap = computeTypeToNameMap(tokenNames); } public Object create(Token payload) { AqpCommonTree tree = new AqpCommonTree(payload); tree.setTypeToNameMap(this.typeToNameMap); return tree; } public Token getToken(Object t) { if (t instanceof AqpCommonTree) { return ((AqpCommonTree) t).getToken(); } return null; // no idea what to do } /* * translate token types into meaningful names it will be used later on */ public Map<Integer, String> computeTypeToNameMap(String[] tokenNames) { Map<Integer, String> m = new HashMap<Integer, String>(); if (tokenNames == null) { return m; } for (int ttype = Token.MIN_TOKEN_TYPE; ttype < tokenNames.length; ttype++) { String name = tokenNames[ttype]; m.put(new Integer(ttype), name); } return m; } }