/** * Determines if the value is a whitespace character like a blank, tab or line break * * @return <tt>true</tt> if the internal value is a whitespace character, <tt>false</tt> otherwise */ public boolean isWhitepace() { return Character.isWhitespace(value) && !isEndOfInput(); }
@Override public String toString() { if (isEndOfInput()) { return "<End Of Input>"; } else { return String.valueOf(value); } }
/** * Returns the internal value as string. * * @return the internal character as string or "" if this is the end of input indicator */ public String getStringValue() { if (isEndOfInput()) { return ""; } return String.valueOf(value); } }
/** * Determines if the value is a whitespace character like a blank, tab or line break * * @return <tt>true</tt> if the internal value is a whitespace character, <tt>false</tt> otherwise */ public boolean isWhitepace() { return Character.isWhitespace(value) && !isEndOfInput(); }
@Override public String toString() { if (isEndOfInput()) { return "<End Of Input>"; } else { return String.valueOf(value); } }
/** * Returns the internal value as string. * * @return the internal character as string or "" if this is the end of input indicator */ public String getStringValue() { if (isEndOfInput()) { return ""; } return String.valueOf(value); } }
/** * Checks if we're looking at an end of block comment */ protected void skipBlockComment() { while (!input.current().isEndOfInput()) { if (isAtEndOfBlockComment()) { return; } input.consume(); } problemCollector.add(ParseError.error(input.current(), "Premature end of block comment")); }
/** * Checks if we're looking at an end of block comment */ protected void skipBlockComment() { while (!input.current().isEndOfInput()) { if (isAtEndOfBlockComment()) { return; } input.consume(); } problemCollector.add(ParseError.error(input.current(), "Premature end of block comment")); }
@Override public QueryBuilder createQuery() { if (parsed.firstCall()) { LookaheadReader reader = new LookaheadReader(new StringReader(input)); QueryBuilder main = parseQuery(reader); if (!reader.current().isEndOfInput()) { IndexAccess.LOG.FINE("Unexpected character in query: " + reader.current()); } // If we cannot compile a query from a non empty input, we probably dropped all short tokens // like a search for "S 8" would be completely dropped. Therefore we resort to "S8". if (main == null && !Strings.isEmpty(input) && input.contains(" ")) { reader = new LookaheadReader(new StringReader(input.replaceAll("\\s", ""))); main = parseQuery(reader); } finishedQuery = main; } return finishedQuery; }
/** * Read everything upon (and including) the next line break */ protected void skipToEndOfLine() { while (!input.current().isEndOfInput() && !input.current().isNewLine()) { input.consume(); } }
/** * Read everything upon (and including) the next line break */ protected void skipToEndOfLine() { while (!input.current().isEndOfInput() && !input.current().isNewLine()) { input.consume(); } }
private C parseOR() { List<C> constraints = new ArrayList<>(); while (!reader.current().isEndOfInput() && !reader.current().is(')')) { C inner = parseAND(); if (inner != null) { constraints.add(inner); } if (!isAtOR(reader)) { break; } else { reader.consume(2); } } if (constraints.isEmpty()) { return null; } else { return factory.or(constraints); } }
@SuppressWarnings("unchecked") private C parseTag() { StringBuilder tag = new StringBuilder(); tag.append(reader.consume()); tag.append(reader.consume()); while (!reader.current().isEndOfInput() && !(reader.current().is('|') && reader.next().is('|'))) { tag.append(reader.consume()); } tag.append(reader.consume()); tag.append(reader.consume()); QueryTag queryTag = QueryTag.parse(tag.toString()); if (queryTag.getType() != null && Strings.isFilled(queryTag.getValue())) { QueryTagHandler<C> handler = ctx.getPart(queryTag.getType(), QueryTagHandler.class); if (handler != null) { return handler.generateConstraint(factory, descriptor, queryTag.getValue()); } } return null; }
protected Tuple<String, String> parseFieldAndValue(LookaheadReader reader) { String field = defaultField; boolean couldBeFieldNameSoFar = true; StringBuilder valueBuilder = new StringBuilder(); while (!reader.current().isEndOfInput() && !reader.current().isWhitepace() && !reader.current().is(')')) { if (reader.current().is(':') && valueBuilder.length() > 0 && couldBeFieldNameSoFar) { field = valueBuilder.toString(); valueBuilder = new StringBuilder(); // Ignore : reader.consume(); couldBeFieldNameSoFar = false; } else { if (couldBeFieldNameSoFar) { couldBeFieldNameSoFar = reader.current().is('-', '_') || reader.current().isLetter() || reader.current().isDigit(); } valueBuilder.append(reader.consume().getValue()); } } return Tuple.create(field, valueBuilder.toString()); }
private boolean continueValue(boolean inQuotes) { if (reader.current().isEndOfInput()) { return false; } if (inQuotes) { return !reader.current().is('"'); } return !reader.current().is(')') && !reader.current().isWhitepace(); }
/** * Determines if the given Char is a symbol character. * <p> * By default these are all non-control characters, which don't match any other class (letter, digit, whitepsace) * * @param ch the character to check * @return <tt>true</tt> if the given character is a valid symbol character, <tt>false</tt> otherwise */ @SuppressWarnings("squid:S1067") protected boolean isSymbolCharacter(Char ch) { if (ch.isEndOfInput() || ch.isDigit() || ch.isLetter() || ch.isWhitepace()) { return false; } char c = ch.getValue(); if (Character.isISOControl(c)) { return false; } return !(isAtBracket(true) || isAtStartOfBlockComment(false) || isAtStartOfLineComment(false) || isAtStartOfNumber() || isAtStartOfIdentifier() || stringDelimiters.containsKey(ch.getValue())); }
private boolean continueToken(boolean inQuotes) { if (reader.current().isEndOfInput()) { return false; } if (inQuotes) { return !reader.current().is('"'); } return !reader.current().is(')', ':') && !reader.current().isWhitepace() && !isAtOperator(); }
private FieldValue parseValue() { skipWhitespace(reader); if (reader.current().is('"')) { reader.consume(); StringBuilder result = new StringBuilder(); while (!reader.current().isEndOfInput() && !reader.current().is('"')) { if (reader.current().is('\\')) { reader.consume(); } result.append(reader.consume()); } reader.consume(); return new FieldValue(result.toString(), true); } else { return new FieldValue(readValue().getValue(), false); } }
/** * Reads and returns an identifier * * @return the parsed identifier as Token */ protected Token fetchId() { Token result = Token.create(Token.TokenType.ID, input.current()); result.addToContent(input.consume()); while (isIdentifierChar(input.current())) { result.addToContent(input.consume()); } if (!input.current().isEndOfInput() && specialIdTerminators.contains(input.current().getValue())) { Token specialId = Token.create(Token.TokenType.SPECIAL_ID, result); specialId.setTrigger(input.current().getStringValue()); specialId.setContent(result.getContents()); specialId.setSource(result.getContents()); specialId.addToSource(input.current()); input.consume(); return handleKeywords(specialId); } return handleKeywords(result); }
/** * Reads and returns an identifier * * @return the parsed identifier as Token */ protected Token fetchId() { Token result = Token.create(Token.TokenType.ID, input.current()); result.addToContent(input.consume()); while (isIdentifierChar(input.current())) { result.addToContent(input.consume()); } if (!input.current().isEndOfInput() && specialIdTerminators.contains(input.current().getValue())) { Token specialId = Token.create(Token.TokenType.SPECIAL_ID, result); specialId.setTrigger(input.current().getStringValue()); specialId.setContent(result.getContents()); specialId.setSource(result.getContents()); specialId.addToSource(input.current()); input.consume(); return handleKeywords(specialId); } return handleKeywords(result); }