private static boolean nextIdentifier(PsiBuilder builder_) { IElementType e; int i = 0; //noinspection StatementWithEmptyBody while ((e = builder_.rawLookup(++i)) == GoParserDefinition.WS || e == GoParserDefinition.NLS) { } return e == GoTypes.IDENTIFIER; }
private static boolean wasAutoSkipped(@NotNull PsiBuilder builder, int steps) { for (int i = -1; i >= -steps; i--) { if (!isWhitespaceOrComment(builder, builder.rawLookup(i))) return false; } return true; }
public static boolean nullableTypePredicate(PsiBuilder builder, int level) { int steps = 1; IElementType next1Element; do { next1Element = builder.rawLookup(steps++); if (isWhiteSpaceOrComment(next1Element)) { continue; } IElementType next2Element; do { next2Element = builder.rawLookup(steps++); if (isWhiteSpaceOrComment(next2Element)) { continue; } if (next2Element != BallerinaTypes.COLON) { return true; } } while ((next2Element != null && isWhiteSpaceOrComment(next2Element))); } while ((next1Element != null && isWhiteSpaceOrComment(next1Element))); return false; } }
IElementType type = builder.rawLookup(i); int tokenStart = builder.rawTokenTypeStart(i); if (isWhitespaceOrComment(builder, type)) {
if (checkParens) { int tokenIdx = -1; while (builder.rawLookup(tokenIdx) == TokenType.WHITE_SPACE) tokenIdx --; LighterASTNode doneMarker = builder.rawLookup(tokenIdx) == state.braces[0].getLeftBraceType() ? builder.getLatestDoneMarker() : null; if (doneMarker != null && doneMarker.getStartOffset() == builder.rawTokenTypeStart(tokenIdx) && doneMarker.getTokenType() == TokenType.ERROR_ELEMENT) { parenList.add(Pair.create(((PsiBuilder.Marker)doneMarker).precede(), (PsiBuilder.Marker)null));
IElementType rawLookup; do { rawLookup = builder.rawLookup(steps--); if (isWhiteSpaceOrComment(rawLookup)) { continue; rawLookup2 = builder.rawLookup(steps--); if (isWhiteSpaceOrComment(rawLookup2)) { continue; IElementType rawLookup3; do { rawLookup3 = builder.rawLookup(steps--); if (isWhiteSpaceOrComment(rawLookup3)) { continue;
public static boolean hasNextTokens(PsiBuilder builder, boolean enableWhitespace, IElementType... tokens) { for (int i = 0, tokensLength = tokens.length; i < tokensLength; i++) { IElementType lookAheadToken = enableWhitespace ? builder.rawLookup(i) : builder.lookAhead(i); if (lookAheadToken != tokens[i]) { return false; } } return true; }
private static boolean wasAutoSkipped(@NotNull PsiBuilder builder, int steps) { for (int i = -1; i >= -steps; i--) { if (!isWhitespaceOrComment(builder, builder.rawLookup(i))) return false; } return true; }
@SuppressWarnings("BooleanMethodIsAlwaysInverted") public boolean isNextWhitespace() { final IElementType possibleWhitespace = myBuilder.rawLookup(1); return WHITE_SPACES.contains(possibleWhitespace); }
public static boolean containsTokenInLookahead(PsiBuilder builder, IElementType token, int maxLookahead, boolean allowWhitespace) { int i = 0; while (i < maxLookahead) { IElementType current = allowWhitespace ? builder.lookAhead(i) : builder.rawLookup(i); if (current == null) { return false; } if (current == token) { return true; } i++; } return false; }
protected static boolean isAfterSemi(PsiBuilder b) { int offset = -1; IElementType tokenType; while ((tokenType = b.rawLookup(offset)) != null) { if (tokenType == TT2_SEMI) { return true; } if (!TemplateToolkitParserDefinition.WHITESPACES_AND_COMMENTS.contains(tokenType)) { return false; } offset--; } return false; }
public static boolean is_new_line(PsiBuilder builder, int level) { if (builder.eof()) return true; for (int i=-1; ; i--) { IElementType type = builder.rawLookup(i); if (type == TokenType.WHITE_SPACE) continue; if (type == JFlexTypes.FLEX_LINE_COMMENT || type == JFlexTypes.FLEX_BLOCK_COMMENT) continue; if (type == JFlexParserDefinition.FLEX_NEWLINE || type == null) return true; if (builder.getOriginalText().charAt(builder.rawTokenTypeStart(i+1)-1) == '\n') return true; addVariant(builder, "<new-line>"); return false; } }
IElementType type = builder.rawLookup(i); int tokenStart = builder.rawTokenTypeStart(i); if (isWhitespaceOrComment(builder, type)) {
public static boolean parseBlockComment(PsiBuilder b, int l) { if (b.getTokenType() == TT2_OPEN_TAG && b.rawLookup(1) == LINE_COMMENT) { PsiBuilder.Marker m = b.mark(); b.advanceLexer(); // open b.advanceLexer(); // close fixme add unclosed handling m.done(BLOCK_COMMENT); return true; } return false; }
@Override protected boolean generateNodeCall(PsiBuilder builder, int level, BnfRule rule, @Nullable BnfExpression node, String nextName, Map<String, GeneratedParserUtilBase.Parser> externalArguments) { int tokenStartOffset = builder.getCurrentOffset(); int initialOffset = builder.rawLookup(-1) == TokenType.WHITE_SPACE ? builder.rawTokenTypeStart(-1) : builder.getCurrentOffset(); String tokenText = builder.getTokenText(); int tokenEndOffset = tokenText == null? tokenStartOffset : tokenStartOffset + tokenText.length(); boolean result = super.generateNodeCall(builder, level, rule, node, nextName, externalArguments); builder.getCurrentOffset(); // advance to the next token first int finalOffset = builder.rawLookup(-1) == TokenType.WHITE_SPACE ? builder.rawTokenTypeStart(-1) : builder.getCurrentOffset(); if (node != null) { if (result && initialOffset <= caretOffset && finalOffset > caretOffset || !result && initialOffset <= caretOffset && tokenEndOffset > caretOffset) { boolean inWhitespace = isTokenExpression(node) && initialOffset <= caretOffset && tokenStartOffset > caretOffset; if (!processor.process(node, result && !inWhitespace)) { throw new ProcessCanceledException(); } } } return result; }
private static void reportFrameError(PsiBuilder builder, ErrorState state) { if (state.currentFrame == null || state.suppressErrors) return; Frame frame = state.currentFrame; int pos = builder.rawTokenIndex(); if (frame.errorReportedAt > pos) { // report error for previous unsuccessful frame LighterASTNode marker = builder.getLatestDoneMarker(); int endOffset = marker != null ? ((PsiBuilderImpl.ProductionMarker)marker).getEndIndex() : pos + 1; while (endOffset <= pos && isWhitespaceOrComment(builder, builder.rawLookup(endOffset - pos))) endOffset ++; boolean inner = endOffset == pos; builder.eof(); reportError(builder, state, frame, inner, true, false); } }
public static boolean collapseNonSpaceTo(PsiBuilder b, int l, IElementType targetElement) { IElementType tokenType = b.getTokenType(); if (tokenType == POD_IDENTIFIER) { PsiBuilder.Marker m = b.mark(); while (!b.eof() && !PodParserDefinition.ALL_WHITE_SPACES.contains(b.rawLookup(1))) { b.advanceLexer(); } b.advanceLexer(); m.collapse(targetElement); return true; } return false; }
if (lBrace != null) { int tokenIdx = -1; while (builder.rawLookup(tokenIdx) == TokenType.WHITE_SPACE) tokenIdx --; LighterASTNode doneMarker = builder.rawLookup(tokenIdx) == lBrace ? builder.getLatestDoneMarker() : null; if (doneMarker != null && doneMarker.getStartOffset() == builder.rawTokenTypeStart(tokenIdx) && doneMarker.getTokenType() == TokenType.ERROR_ELEMENT) { parens.add(Pair.create(((PsiBuilder.Marker)doneMarker).precede(), null));
public static boolean parseFileAsString(PsiBuilder b, int l) { if (b.eof()) { return false; } if (isEndMarker(b)) { return false; } boolean gotItem = false; PsiBuilder.Marker stringMarker = b.mark(); while (!b.eof()) { if (isEndMarker(b)) { break; } boolean isLastToken = TemplateToolkitParserDefinition.WHITE_SPACES.contains(b.rawLookup(1)); PsiBuilder.Marker m = b.mark(); b.advanceLexer(); m.collapse(TT2_STRING_CONTENT); gotItem = true; if (isLastToken) { break; } } if (gotItem) { stringMarker.done(SQ_STRING_EXPR); } else { stringMarker.drop(); } return gotItem; }