List of usage examples for org.antlr.v4.runtime ParserRuleContext getChild
@Override public ParseTree getChild(int i)
From source file:org.eclipse.titan.common.parsers.ParserLogger.java
License:Open Source License
/** * Logs a parse tree.//from w ww .j a v a 2s .c o m * Internal version. * RECURSIVE * @param aRoot parse tree * @param aParser parser to get rule name * @param aTokens token list to get tokens by index (for getting tokens of a rule) * @param aTokenNameResolver resolver to get token name * @param aLevel indentation level * @param aParentOneChild parent has 1 child */ private static void log(final ParseTree aRoot, final Parser aParser, final List<Token> aTokens, final TokenNameResolver aTokenNameResolver, final int aLevel, final boolean aParentOneChild) { if (aRoot == null) { println("ERROR: ParseTree root is null"); return; } if (!aParser.getBuildParseTree()) { println("ERROR: ParseTree is not build. Call Parser.setBuildParseTree( true ); BEFORE parsing. Or do NOT call Parser.setBuildParseTree( false );"); return; } if (aRoot instanceof ParserRuleContext) { final ParserRuleContext rule = (ParserRuleContext) aRoot; final String ruleInfo = getRuleInfo(rule, aParser, aTokenNameResolver); if (aParentOneChild) { printArrow(ruleInfo); } else { printIndent(ruleInfo, aLevel); } final int count = rule.getChildCount(); final boolean oneChild = count == 1 && rule.exception == null; if (!oneChild) { print(": '" + getEscapedRuleText(rule, aTokens) + "'"); println(); } for (int i = 0; i < count; i++) { final ParseTree child = rule.getChild(i); log(child, aParser, aTokens, aTokenNameResolver, aLevel + (aParentOneChild ? 0 : 1), oneChild); } } else if (aRoot instanceof TerminalNodeImpl) { final TerminalNodeImpl tn = (TerminalNodeImpl) aRoot; if (aParentOneChild) { print(": '" + getEscapedTokenText(tn.getSymbol()) + "'"); println(); } printIndent(getTokenInfo(tn.getSymbol(), aTokenNameResolver), aLevel); if (tn.parent == null) { print(", parent == null <-------------------------------------------------------------- ERROR"); } println(); } else if (aRoot instanceof AddedParseTree) { final AddedParseTree apt = (AddedParseTree) aRoot; if (aParentOneChild) { print(": '" + getEscapedText(apt.getText()) + "'"); println(); } printIndent("AddedParseString: " + getEscapedText(apt.getText()), aLevel); if (apt.getParent() == null) { print(", parent == null <-------------------------------------------------------------- ERROR"); } println(); } else { println("ERROR: INVALID ParseTree type"); } }
From source file:org.napile.asm.io.text.in.type.TypeNodeWorker.java
License:Apache License
protected void acceptChild(@NotNull ParserRuleContext<Token> parserRuleContext) { for (int i = 0; i < parserRuleContext.getChildCount(); i++) { ParseTree parserTree = parserRuleContext.getChild(i); if (parserTree instanceof ParserRuleContext) ((ParserRuleContext) parserTree).enterRule(this); else if (parserTree instanceof ParseTree.TerminalNode) visitTerminal((ParseTree.TerminalNode) parserTree); }//ww w . ja v a2s. c om }
From source file:org.tinygroup.template.interpret.TemplateFromContext.java
License:GNU General Public License
/** * Trim ?Set ? ?//from w ww .j av a2 s . c o m * @param text * @param nowTerminalNode * @param trimWhileSpace ??? * @return */ private String trimCommentsDirectiveWhileSpaceNewLine(String text, TerminalNode nowTerminalNode, boolean trimWhileSpace) { if (text == null || text.length() == 0) { return ""; } if (nowTerminalNode.getParent() instanceof TinyTemplateParser.TextContext) { // ??TextContext TinyTemplateParser.TextContext parseTree = (TinyTemplateParser.TextContext) nowTerminalNode.getParent(); // ?Text Context?Block ParserRuleContext parentParserRuleContext = getParseTrreeParentButBlock(parseTree); if (isDirectiveNeedTrim(parentParserRuleContext)) {// ??Trim\r\n text = trimTextLeft(text); if (trimWhileSpace) { text = TemplateUtil.trimStart(text, stripWithSpaceChars); text = TemplateUtil.trimEnd(text, stripWithSpaceChars); } } else if (parentParserRuleContext instanceof TinyTemplateParser.BlockContext) { // ?Text ContextBlockContext? int parentChildrenIndex = getParentChildrenIndex(parseTree, parentParserRuleContext); // ? if (parentChildrenIndex > 0) { // ? ParseTree previousParseContext = parentParserRuleContext.getChild(parentChildrenIndex - 1); // text?? if (previousParseContext instanceof TinyTemplateParser.CommentContext || (previousParseContext instanceof TinyTemplateParser.DirectiveContext && (previousParseContext .getChild(0) instanceof TinyTemplateParser.Set_directiveContext || previousParseContext.getChild( 0) instanceof TinyTemplateParser.Blank_directiveContext || previousParseContext.getChild( 0) instanceof TinyTemplateParser.Call_macro_directiveContext || previousParseContext.getChild( 0) instanceof TinyTemplateParser.Call_macro_block_directiveContext || previousParseContext.getChild( 0) instanceof TinyTemplateParser.Import_directiveContext || previousParseContext.getChild( 0) instanceof TinyTemplateParser.If_directiveContext))) { text = trimTextLeft(text); if (trimWhileSpace) { text = TemplateUtil.trimStart(text, stripWithSpaceChars); } } } if (trimWhileSpace) { // ??? if (parentChildrenIndex < parentParserRuleContext.getChildCount()) { // ? ParseTree previousParseContext = parentParserRuleContext.getChild(parentChildrenIndex + 1); // text?? if (previousParseContext instanceof TinyTemplateParser.CommentContext || (previousParseContext instanceof TinyTemplateParser.DirectiveContext && (previousParseContext .getChild(0) instanceof TinyTemplateParser.Set_directiveContext || previousParseContext.getChild( 0) instanceof TinyTemplateParser.Blank_directiveContext || previousParseContext.getChild( 0) instanceof TinyTemplateParser.Call_macro_directiveContext || previousParseContext.getChild( 0) instanceof TinyTemplateParser.Call_macro_block_directiveContext || previousParseContext.getChild( 0) instanceof TinyTemplateParser.Import_directiveContext || previousParseContext.getChild( 0) instanceof TinyTemplateParser.If_directiveContext))) { text = TemplateUtil.trimEnd(text, stripWithSpaceChars); } } } } } return text; }
From source file:org.tinygroup.template.interpret.TemplateFromContext.java
License:GNU General Public License
/** * ??TextContext(?TextContextBlockContext)?List? * @param parseTree ?/* www .j a v a2s . co m*/ * @param parserRuleContext * @return */ private int getParentChildrenIndex(ParserRuleContext parseTree, ParserRuleContext parserRuleContext) { int parentChildrenIndex = 0; for (int i = 0; i < parserRuleContext.getChildCount(); i++) { ParserRuleContext childrenTree = (ParserRuleContext) parserRuleContext.getChild(i); if (childrenTree == parseTree) { parentChildrenIndex = i; break; } } return parentChildrenIndex; }
From source file:org.wso2.ballerinalang.compiler.parser.BLangWSPreservingParserListener.java
License:Open Source License
@Override public void exitEveryRule(ParserRuleContext parserRuleContext) { if (getWSWasCalledOn == parserRuleContext) { return;// w w w .j av a2s. c om } int rangeEndTokenIndex; if (parserRuleContext.stop == null) { ParseTree child = parserRuleContext.getChild(1); if (child instanceof TerminalNode) { // This is needed to handle A + B + C case of BinaryAddSubExpression rangeEndTokenIndex = ((TerminalNode) child).getSymbol().getTokenIndex(); } else { return; } } else { rangeEndTokenIndex = parserRuleContext.stop.getTokenIndex() + 1; } closeLastRange(rangeEndTokenIndex); Stack<TokenRange> tokenRanges = rangesOfRuleContext.pop(); Stack<Whitespace> ws = new Stack<>(); for (TokenRange range : tokenRanges) { addWSFromRange(ws, range); } wsSinceLastNode.addAll(ws); if (!rangesOfRuleContext.isEmpty()) { rangesOfRuleContext.peek().add(new TokenRange(rangeEndTokenIndex)); } }
From source file:org.xgmtk.lore.ast.ASTBuilder.java
License:Apache License
protected static void printContext(ParserRuleContext ctx) { System.err.println("(Context object id: " + ctx + ", line: " + ctx.start.getLine() + ", \"" + ctx.getText() + "\", child count: " + ctx.getChildCount() + "){"); for (int i = 0; i < ctx.getChildCount(); ++i) { ParseTree ptree = ctx.getChild(i); System.err.println("\t\"" + ptree.getText() + "\"(has: " + ptree.getChildCount() + ")"); }/*from w w w .j a v a 2s. c o m*/ System.err.println("}"); }
From source file:org.xgmtk.lore.ast.ASTBuilder.java
License:Apache License
/** * TODO write JavaDoc comment./* w w w . j a v a 2s. c o m*/ * * @param ctx * @param string * @return */ protected static int indexOf(ParserRuleContext ctx, String string) { for (int i = 0; i < ctx.getChildCount(); ++i) { if (Objects.equals(ctx.getChild(i).getText(), string)) { return i; } } return -1; }
From source file:org.xgmtk.lore.ast.ASTBuilder.java
License:Apache License
protected AST buildOperatorTree(ParserRuleContext ctx, final NonTerminalSymbol[] ops) { // printContext(ctx); List<AST> cs = this.getChildrenList(); // System.err.println("ParseTree: \""+ctx.getText()+"\""); // System.err.println("AST Children: "+cs.size()); // System.err.println("ParseTree Children: "+ctx.getChildCount()); AST left = cs.get(0);//from w ww. j av a2 s . co m int ci = 1; for (int i = 1; i < ctx.getChildCount(); i += 2) { AST right = cs.get(ci++); NonTerminalSymbol t = selectNonterminalSymbol(ctx, ctx.getChild(i).getText(), ops); left = node(t, loc(src, ctx.getStart().getLine()), left, right); } return left; }
From source file:processing.mode.java.preproc.PdeParseTreeListener.java
License:Open Source License
/** * Manage parsing out a size or fullscreen call. * * @param ctx The context of the call.//www . ja v a 2 s.c o m */ private void handleSizeCall(ParserRuleContext ctx) { ParserRuleContext testCtx = ctx.getParent().getParent().getParent().getParent(); boolean isInGlobal = testCtx instanceof ProcessingParser.StaticProcessingSketchContext; boolean isInSetup; if (!isInGlobal) { ParserRuleContext methodDeclaration = testCtx.getParent().getParent(); isInSetup = isMethodSetup(methodDeclaration); } else { isInSetup = false; } ParseTree argsContext = ctx.getChild(2); boolean thisRequiresRewrite = false; boolean isSize = ctx.getChild(0).getText().equals(SIZE_METHOD_NAME); boolean isFullscreen = ctx.getChild(0).getText().equals(FULLSCREEN_METHOD_NAME); if (isInGlobal || isInSetup) { thisRequiresRewrite = true; if (isSize && argsContext.getChildCount() > 2) { sketchWidth = argsContext.getChild(0).getText(); if (PApplet.parseInt(sketchWidth, -1) == -1 && !sketchWidth.equals("displayWidth")) { thisRequiresRewrite = false; } sketchHeight = argsContext.getChild(2).getText(); if (PApplet.parseInt(sketchHeight, -1) == -1 && !sketchHeight.equals("displayHeight")) { thisRequiresRewrite = false; } if (argsContext.getChildCount() > 3) { sketchRenderer = argsContext.getChild(4).getText(); if (!(sketchRenderer.equals("P2D") || sketchRenderer.equals("P3D") || sketchRenderer.equals("OPENGL") || sketchRenderer.equals("JAVA2D") || sketchRenderer.equals("FX2D"))) { thisRequiresRewrite = false; } } } if (isFullscreen) { sketchWidth = "displayWidth"; sketchWidth = "displayHeight"; thisRequiresRewrite = true; sizeIsFullscreen = true; if (argsContext.getChildCount() > 0) { sketchRenderer = argsContext.getChild(0).getText(); if (!(sketchRenderer.equals("P2D") || sketchRenderer.equals("P3D") || sketchRenderer.equals("OPENGL") || sketchRenderer.equals("JAVA2D") || sketchRenderer.equals("FX2D"))) { thisRequiresRewrite = false; } } } } if (thisRequiresRewrite) { createDelete(ctx.start, ctx.stop); createInsertAfter(ctx.stop, "/* size commented out by preprocessor */"); sizeRequiresRewrite = true; } }
From source file:processing.mode.java.preproc.PdeParseTreeListener.java
License:Open Source License
/** * Determine if a method declaration is for setup. * * @param declaration The method declaration to parse. * @return True if setup and false otherwise. *//* w w w.j av a 2 s . c o m*/ private boolean isMethodSetup(ParserRuleContext declaration) { if (declaration.getChildCount() < 2) { return false; } return declaration.getChild(1).getText().equals("setup"); }