(String cmd)
| 244 | } |
| 245 | |
| 246 | @Override |
| 247 | protected void processPig(String cmd) throws IOException { |
| 248 | |
| 249 | int start = getLineNumber(); |
| 250 | |
| 251 | StringBuilder blder = new StringBuilder(); |
| 252 | for (int i = 1; i < start; i++) { |
| 253 | blder.append("\n"); |
| 254 | } |
| 255 | |
| 256 | if (cmd.charAt(cmd.length() - 1) != ';') { |
| 257 | cmd += ";"; |
| 258 | } |
| 259 | |
| 260 | blder.append(cmd); |
| 261 | cmd = blder.toString(); |
| 262 | |
| 263 | CommonTokenStream tokenStream = QueryParserDriver.tokenize(cmd, source); |
| 264 | Tree ast = null; |
| 265 | |
| 266 | try { |
| 267 | ast = QueryParserDriver.parse( tokenStream ); |
| 268 | } catch(RuntimeException ex) { |
| 269 | throw new ParserException( ex.getMessage() ); |
| 270 | } |
| 271 | |
| 272 | if (!hasMacro) { |
| 273 | List<CommonTree> importNodes = new ArrayList<CommonTree>(); |
| 274 | List<CommonTree> macroNodes = new ArrayList<CommonTree>(); |
| 275 | List<CommonTree> inlineNodes = new ArrayList<CommonTree>(); |
| 276 | |
| 277 | QueryParserDriver.traverseImport(ast, importNodes); |
| 278 | QueryParserDriver.traverse(ast, macroNodes, inlineNodes); |
| 279 | |
| 280 | if (!importNodes.isEmpty() || !macroNodes.isEmpty() |
| 281 | || !inlineNodes.isEmpty()) { |
| 282 | hasMacro = true; |
| 283 | } |
| 284 | } |
| 285 | |
| 286 | if (parserTree == null) { |
| 287 | parserTree = ast; |
| 288 | } else { |
| 289 | int n = ast.getChildCount(); |
| 290 | for (int i = 0; i < n; i++) { |
| 291 | parserTree.addChild(ast.getChild(i)); |
| 292 | } |
| 293 | } |
| 294 | |
| 295 | CommonTree dup = (CommonTree)parserTree.dupNode(); |
| 296 | dup.addChildren(((CommonTree)parserTree).getChildren()); |
| 297 | |
| 298 | QueryParserDriver driver = new QueryParserDriver(context, "0", |
| 299 | new HashMap<String, String>()); |
| 300 | Tree newAst = driver.expandMacro(dup); |
| 301 | |
| 302 | CommonTreeNodeStream nodes = new CommonTreeNodeStream( newAst ); |
| 303 | AstPrinter walker = new AstPrinter( nodes ); |
nothing calls this directly
no test coverage detected