public static boolean recursion_guard_(PsiBuilder builder_, int level_, String funcName_) { if (level_ > 1000) { builder_.error("Maximum recursion level (" + 1000 + ") reached in " + funcName_); return false; } return true; }
public static boolean recursion_guard_(PsiBuilder builder, int level, String funcName) { if (level > MAX_RECURSION_LEVEL) { builder.error( "Maximum recursion level (" + MAX_RECURSION_LEVEL + ") reached in '" + funcName + "'"); return false; } return true; }
private static boolean reportError( PsiBuilder builder, ErrorState state, Frame frame, IElementType elementType, boolean force, boolean advance) { String expectedText = state.getExpectedText(builder); boolean notEmpty = StringUtil.isNotEmpty(expectedText); if (force || notEmpty || advance) { String gotText = builder.eof() ? "unexpected end of file" : notEmpty ? "got '" + builder.getTokenText() + "'" : "'" + builder.getTokenText() + "' unexpected"; String message = expectedText + gotText; if (advance) { PsiBuilder.Marker mark = builder.mark(); builder.advanceLexer(); mark.error(message); } else if (!force) { PsiBuilder.Marker extensionMarker = null; IElementType extensionTokenType = null; PsiBuilderImpl.ProductionMarker latestDoneMarker = elementType == null ? null : (PsiBuilderImpl.ProductionMarker) builder.getLatestDoneMarker(); if (latestDoneMarker != null && frame.position >= latestDoneMarker.getStartIndex() && frame.position <= latestDoneMarker.getEndIndex()) { extensionMarker = ((PsiBuilder.Marker) latestDoneMarker).precede(); extensionTokenType = latestDoneMarker.getTokenType(); ((PsiBuilder.Marker) latestDoneMarker).drop(); } builder.error(message); if (extensionMarker != null) extensionMarker.done(extensionTokenType); } else { builder.error(message); } builder.eof(); // skip whitespaces frame.errorReportedAt = builder.rawTokenIndex(); return true; } return false; }
public static boolean empty_element_parsed_guard_(PsiBuilder builder, String funcName, int pos) { if (pos == current_position_(builder)) { builder.error( "Empty element parsed in '" + funcName + "' at offset " + builder.getCurrentOffset()); return false; } return true; }
private static boolean reportError(ErrorState state, PsiBuilder builder_, boolean force) { String expectedText = state.getExpectedText(builder_); boolean notEmpty = StringUtil.isNotEmpty(expectedText); if (force || notEmpty) { final String gotText = builder_.eof() ? "unexpected end of file" : notEmpty ? "got '" + builder_.getTokenText() + "'" : "'" + builder_.getTokenText() + "' unexpected"; builder_.error(expectedText + gotText); return true; } return false; }
public void parse(PsiBuilder builder) { final PsiBuilder.Marker root = builder.mark(); PsiBuilder.Marker nested = null; while (!builder.eof()) { final String token = builder.getTokenText(); if ("[".equals(token) && nested == null) { nested = builder.mark(); } builder.advanceLexer(); if ("]".equals(token) && nested != null) { nested.collapse(myCHAMELEON_2); nested.precede().done(OTHER); nested = null; builder.error("test error 1"); } } if (nested != null) nested.drop(); root.done(this); }
public static void empty_element_parsed_guard_( PsiBuilder builder_, int offset_, String funcName_) { builder_.error("Empty element parsed in " + funcName_ + " at offset " + offset_); }