MCPcopy Create free account
hub / github.com/apache/pig / processPig

Method processPig

src/org/apache/pig/parser/DryRunGruntParser.java:246–320  ·  view source on GitHub ↗
(String cmd)

Source from the content-addressed store, hash-verified

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 );

Callers

nothing calls this directly

Calls 14

tokenizeMethod · 0.95
parseMethod · 0.95
traverseImportMethod · 0.95
traverseMethod · 0.95
expandMacroMethod · 0.95
lengthMethod · 0.80
dupNodeMethod · 0.80
splitMethod · 0.80
appendMethod · 0.65
getLineNumberMethod · 0.45
toStringMethod · 0.45
getMessageMethod · 0.45

Tested by

no test coverage detected