@SuppressWarnings("unused") private String buildFunctionBody(ExpressionBodyContext expressionBodyContext){ StringBuffer sb=new StringBuffer(); for(ParseTree node:expressionBodyContext.children){ Interval interval=node.getSourceInterval(); int index=interval.a; List<Token> leftTokens=tokenStream.getHiddenTokensToLeft(index); if(leftTokens!=null){ Token token=leftTokens.get(0); String text=token.getText(); sb.append(text); } sb.append(node.getText()); List<Token> rightTokens=tokenStream.getHiddenTokensToRight(index); if(rightTokens!=null){ Token token=rightTokens.get(0); String text=token.getText(); sb.append(text); } } return sb.toString(); }
/** Replace any subtree siblings of root that are completely to left * or right of lookahead range with a CommonToken(Token.INVALID_TYPE,"...") * node. The source interval for t is not altered to suit smaller range! * * WARNING: destructive to t. * * @since 4.5.1 */ public static void stripChildrenOutOfRange(ParserRuleContext t, ParserRuleContext root, int startIndex, int stopIndex) { if ( t==null ) return; for (int i = 0; i < t.getChildCount(); i++) { ParseTree child = t.getChild(i); Interval range = child.getSourceInterval(); if ( child instanceof ParserRuleContext && (range.b < startIndex || range.a > stopIndex) ) { if ( isAncestorOf(child, root) ) { // replace only if subtree doesn't have displayed root CommonToken abbrev = new CommonToken(Token.INVALID_TYPE, "..."); t.children.set(i, new TerminalNodeImpl(abbrev)); } } } }
@SuppressWarnings("unused") private String buildFunctionBody(ExpressionBodyContext expressionBodyContext){ StringBuffer sb=new StringBuffer(); for(ParseTree node:expressionBodyContext.children){ Interval interval=node.getSourceInterval(); int index=interval.a; List<Token> leftTokens=tokenStream.getHiddenTokensToLeft(index); if(leftTokens!=null){ Token token=leftTokens.get(0); String text=token.getText(); sb.append(text); } sb.append(node.getText()); List<Token> rightTokens=tokenStream.getHiddenTokensToRight(index); if(rightTokens!=null){ Token token=rightTokens.get(0); String text=token.getText(); sb.append(text); } } return sb.toString(); }
private void pushChunk(@NotNull ParseTree tree) { org.antlr.v4.runtime.misc.Interval sourceInterval = tree.getSourceInterval(); Chunk chunk = new Chunk().withInterval(sourceInterval); chunks.push(chunk); }
/** Replace any subtree siblings of root that are completely to left * or right of lookahead range with a CommonToken(Token.INVALID_TYPE,"...") * node. The source interval for t is not altered to suit smaller range! * * WARNING: destructive to t. * * @since 4.5.1 */ public static void stripChildrenOutOfRange(ParserRuleContext t, ParserRuleContext root, int startIndex, int stopIndex) { if ( t==null ) return; for (int i = 0; i < t.getChildCount(); i++) { ParseTree child = t.getChild(i); Interval range = child.getSourceInterval(); if ( child instanceof ParserRuleContext && (range.b < startIndex || range.a > stopIndex) ) { if ( isAncestorOf(child, root) ) { // replace only if subtree doesn't have displayed root CommonToken abbrev = new CommonToken(Token.INVALID_TYPE, "..."); t.children.set(i, new TerminalNodeImpl(abbrev)); } } } }
/** Replace any subtree siblings of root that are completely to left * or right of lookahead range with a CommonToken(Token.INVALID_TYPE,"...") * node. The source interval for t is not altered to suit smaller range! * * WARNING: destructive to t. * * @since 4.5.1 */ public static void stripChildrenOutOfRange(ParserRuleContext t, ParserRuleContext root, int startIndex, int stopIndex) { if ( t==null ) return; for (int i = 0; i < t.getChildCount(); i++) { ParseTree child = t.getChild(i); Interval range = child.getSourceInterval(); if ( child instanceof ParserRuleContext && (range.b < startIndex || range.a > stopIndex) ) { if ( isAncestorOf(child, root) ) { // replace only if subtree doesn't have displayed root CommonToken abbrev = new CommonToken(Token.INVALID_TYPE, "..."); t.children.set(i, new TerminalNodeImpl(abbrev)); } } } }
/** Replace any subtree siblings of root that are completely to left * or right of lookahead range with a CommonToken(Token.INVALID_TYPE,"...") * node. The source interval for t is not altered to suit smaller range! * * WARNING: destructive to t. * * @since 4.5.1 */ public static void stripChildrenOutOfRange(ParserRuleContext t, ParserRuleContext root, int startIndex, int stopIndex) { if ( t==null ) return; for (int i = 0; i < t.getChildCount(); i++) { ParseTree child = t.getChild(i); Interval range = child.getSourceInterval(); if ( child instanceof ParserRuleContext && (range.b < startIndex || range.a > stopIndex) ) { if ( isAncestorOf(child, root) ) { // replace only if subtree doesn't have displayed root CommonToken abbrev = new CommonToken(Token.INVALID_TYPE, "..."); t.children.set(i, new TerminalNodeImpl(abbrev)); } } } }
/** * Constructor. * * @param node the error node. */ private CQLSyntaxError(ErrorNode node) { this.text = node.getText(); int offset = 0; ParseTree n = node; while (n != null) { offset += n.getSourceInterval().a; n = n.getParent(); } this.interval = new Interval(offset + node.getSourceInterval().a, offset + node.getSourceInterval().b); } }
/** * Constructor. * * @param node the error node. */ private CQLSyntaxError(ErrorNode node) { this.text = node.getText(); int offset = 0; ParseTree n = node; while (n != null) { offset += n.getSourceInterval().a; n = n.getParent(); } this.interval = new Interval(offset + node.getSourceInterval().a, offset + node.getSourceInterval().b); } }
Interval extent = r.getSourceInterval(); // token indexes int start = tokens.get(extent.a).getStartIndex(); int stop = tokens.get(extent.b).getStopIndex();
private Expression processIndexedArrayElement(final ParseTree arrayExprCtx, final KantParser.ExprContext sexpCtx, final TerminalNode ABELIAN_INCREMENT_OPCtx) { // | abelian_expr '[' expr ']' ABELIAN_INCREMENT_OP // | ABELIAN_INCREMENT_OP expr '[' expr ']' Expression retval = null; final Expression indexExpr = parsingData_.popExpression(); indexExpr.setResultIsConsumed(true); final Expression rawArrayBase = parsingData_.popExpression(); final Type rawArrayBaseType = rawArrayBase.type(); assert rawArrayBaseType instanceof ArrayType; final ArrayType arrayType = (ArrayType)rawArrayBaseType; final Type baseType = arrayType.baseType(); final ArrayExpression arrayBase = new ArrayExpression(rawArrayBase, baseType); arrayBase.setResultIsConsumed(true); final Interval JavaIDInterval = arrayExprCtx.getSourceInterval(); final Interval OperatorInterval = ABELIAN_INCREMENT_OPCtx.getSourceInterval(); final UnaryopExpressionWithSideEffect.PreOrPost preOrPost = JavaIDInterval.startsAfter(OperatorInterval)? UnaryopExpressionWithSideEffect.PreOrPost.Pre: UnaryopExpressionWithSideEffect.PreOrPost.Post; retval = new ArrayIndexExpressionUnaryOp(arrayBase, indexExpr, ABELIAN_INCREMENT_OPCtx.getText(), preOrPost, sexpCtx.getStart()); return retval; }