String command) throws SemanticException{
Context ctx;
ParseContext subPCtx = null;
try {
ctx = new Context(conf);
ParseDriver pd = new ParseDriver();
ASTNode tree = pd.parse(command, ctx);
tree = ParseUtils.findRootNonNullToken(tree);
BaseSemanticAnalyzer sem = SemanticAnalyzerFactory.get(conf, tree);
assert(sem instanceof SemanticAnalyzer);
doSemanticAnalysis((SemanticAnalyzer) sem, tree, ctx);