public static boolean recursion_guard_(PsiBuilder builder, int level, String funcName) { if (level > MAX_RECURSION_LEVEL) { builder.mark().error("Maximum recursion level (" + MAX_RECURSION_LEVEL + ") reached in '" + funcName + "'"); return false; } return true; }
public static PsiBuilder.Marker enter_section_(PsiBuilder builder) { ErrorState.get(builder).level++; return builder.mark(); }
public static PsiBuilder.Marker enter_section_(PsiBuilder builder, int level, int modifiers, IElementType elementType, String frameName) { PsiBuilder.Marker marker = builder.mark(); enter_section_impl_(builder, level, modifiers, elementType, frameName); return marker; }
private static void run_hooks_impl_(PsiBuilder builder, ErrorState state, @Nullable IElementType elementType) { if (state.hooks == null) return; PsiBuilder.Marker marker = elementType == null ? null : (PsiBuilder.Marker)builder.getLatestDoneMarker(); if (elementType != null && marker == null) { builder.mark().error("No expected done marker at offset " + builder.getCurrentOffset()); } while (state.hooks != null && state.hooks.level >= state.level) { if (state.hooks.level == state.level) { marker = ((Hook<Object>)state.hooks.hook).run(builder, marker, state.hooks.param); } state.hooks = state.hooks.next; } }
public static boolean parseTokens(PsiBuilder builder, boolean smart, int pin, IElementType... tokens) { PsiBuilder.Marker marker = builder.mark(); boolean result = consumeTokens(builder, smart, pin, tokens); if (!result) { marker.rollbackTo(); } else { marker.drop(); } return result; }
@Override public PsiBuilder.Marker run(PsiBuilder builder, PsiBuilder.Marker marker, String param) { PsiBuilderImpl.ProductionMarker m = (PsiBuilderImpl.ProductionMarker)marker; int start = m == null ? builder.getCurrentOffset() : m.getStartOffset(); int end = m == null ? start : m.getEndOffset(); String prefix = "[" + start + ", " + end + "]" + (m == null ? "" : " " + m.getTokenType()); builder.mark().error(prefix + ": " + param); return marker; } };
public static boolean consumeBlock(PsiBuilder builder_, @SuppressWarnings("UnusedParameters") int level) { PsiFile file = builder_.getUserDataUnprotected(FileContextUtil.CONTAINING_FILE_KEY); VirtualFile data = file != null ? file.getUserData(IndexingDataKeys.VIRTUAL_FILE) : null; if (data == null) return false; int i = 0; PsiBuilder.Marker m = builder_.mark(); do { IElementType type = builder_.getTokenType(); if (type == GoTypes.TYPE_ && nextIdentifier(builder_)) { // don't count a.(type), only type <ident> m.rollbackTo(); return false; } i += type == GoTypes.LBRACE ? 1 : type == GoTypes.RBRACE ? -1 : 0; builder_.advanceLexer(); } while (i > 0 && !builder_.eof()); boolean result = i == 0; if (result) { m.drop(); } else { m.rollbackTo(); } return result; }
String message = expectedText + (builder.eof() ? "unexpected end of file" : notEmpty ? "got " + actual : actual + " unexpected"); if (advance) { PsiBuilder.Marker mark = builder.mark(); builder.advanceLexer(); mark.error(message);
public static boolean recursion_guard_(PsiBuilder builder, int level, String funcName) { if (level > MAX_RECURSION_LEVEL) { builder.mark().error("Maximum recursion level (" + MAX_RECURSION_LEVEL + ") reached in '" + funcName + "'"); return false; } return true; }
protected ParseTree parse(TParser parser, IElementType root, PsiBuilder builder) { PsiBuilder.Marker rollbackMarker = builder.mark(); try { return parseImpl(parser, root, builder); } finally { rollbackMarker.rollbackTo(); } }
public static PsiBuilder.Marker enter_section_(PsiBuilder builder) { ErrorState state = ErrorState.get(builder); reportFrameError(builder, state); state.level++; return builder.mark(); }
public static boolean parseTokens(PsiBuilder builder, boolean smart, int pin, IElementType... tokens) { PsiBuilder.Marker marker = builder.mark(); boolean result = consumeTokens(builder, smart, pin, tokens); if (!result) { marker.rollbackTo(); } else { marker.drop(); } return result; }
public static boolean checkAndConvert(PsiBuilder b, int l, IElementType sourceType, IElementType targetType) { if (b.getTokenType() == sourceType) { PsiBuilder.Marker m = b.mark(); b.advanceLexer(); m.collapse(POD_INDENT_LEVEL); return true; } return false; }
public static boolean parseUnaryMinus(PsiBuilder b, int l) { if (b.getTokenType() == TT2_MINUS) { PsiBuilder.Marker m = b.mark(); b.advanceLexer(); m.collapse(TT2_MINUS_UNARY); return true; } return false; } }
public static boolean parseHardNewline(PsiBuilder b) { if (b.getTokenType() == HTML_MASON_HARD_NEWLINE) { PsiBuilder.Marker m = b.mark(); b.advanceLexer(); m.collapse(TokenType.WHITE_SPACE); return true; } return false; }
public static boolean parseNamespaceContent(PsiBuilder b, int l) { PsiBuilder.Marker m = b.mark(); if (PerlParserGenerated.real_namespace_content(b, l)) { m.done(NAMESPACE_CONTENT); m.setCustomEdgeTokenBinders(GREEDY_LEFT_BINDER, NAMESPACE_RIGHT_BINDER); return true; } m.rollbackTo(); return false; }
/** Convert ANTLR parse tree to PSI tree. */ protected void walkParseTree(ParseTree parseTree, AstBuilderListener listener, IElementType root, PsiBuilder builder) { PsiBuilder.Marker rootMarker = builder.mark(); ParseTreeWalker.DEFAULT.walk(listener, parseTree); while (!builder.eof()) { builder.advanceLexer(); } rootMarker.done(root); } }
public static boolean recoverTo(PsiBuilder b, IElementType toElement, String errorMessage) { // recover bad code PsiBuilder.Marker errorMarker = b.mark(); while (!b.eof() && b.getTokenType() != toElement) { b.advanceLexer(); ; } errorMarker.error(errorMessage); return b.eof(); } }
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; }