private String name() { char c = advance(); if (c == '{') { StringBuilder builder = new StringBuilder(); while (peek() != '}') { builder.append(advance()); } advance(); return builder.toString(); } else { return String.valueOf(c); } }
private String name() { char c = advance(); if (c == '{') { StringBuilder builder = new StringBuilder(); while (peek() != '}') { builder.append(advance()); } advance(); return builder.toString(); } else { return String.valueOf(c); } }
AsciiSet set = AsciiSet.none(); boolean rangeStart = false; boolean invert = peek() == '^'; if (invert) { advance(); set = AsciiSet.all(); if (peek() == ']' || peek() == '-') { char c = advance(); set = update(set, AsciiSet.fromPattern(Character.toString(c)), invert); while (!isAtEnd() && peek() != ']') { char c = advance(); switch (c) { break; case '&': if (peek() == '&') { advance(); if (peek() == '[') { advance(); set = set.intersection(charClass()); } else if (peek() != ']') { set = set.intersection(charClass()); --current; if (rangeStart && peek() != ']') { if (peek() == '\\') { advance();
AsciiSet set = AsciiSet.none(); boolean rangeStart = false; boolean invert = peek() == '^'; if (invert) { advance(); set = AsciiSet.all(); if (peek() == ']' || peek() == '-') { char c = advance(); set = update(set, AsciiSet.fromPattern(Character.toString(c)), invert); while (!isAtEnd() && peek() != ']') { char c = advance(); switch (c) { break; case '&': if (peek() == '&') { advance(); if (peek() == '[') { advance(); set = set.intersection(charClass()); } else if (peek() != ']') { set = set.intersection(charClass()); --current; if (rangeStart && peek() != ']') { if (peek() == '\\') { advance();
private Matcher escape() { char c = peek(); if (c == 'Q') { return quotation(); } else if (c == 'c') { throw unsupported("control character"); } else if (Constants.DIGIT.contains(c) || c == 'k') { throw unsupported("back references"); } else { AsciiSet set = namedCharClass(); if (set == null) { advance(); return new CharSeqMatcher(String.valueOf(c)); } else { return new CharClassMatcher(set); } } }
private Matcher escape() { char c = peek(); if (c == 'Q') { return quotation(); } else if (c == 'c') { throw unsupported("control character"); } else if (Constants.DIGIT.contains(c) || c == 'k') { throw unsupported("back references"); } else { AsciiSet set = namedCharClass(); if (set == null) { advance(); return new CharSeqMatcher(String.valueOf(c)); } else { return new CharClassMatcher(set); } } }
private Matcher group() { if (peek() == '?') { advance(); char c = advance(); switch (c) { case '<': // Named capturing group advance(v -> v != '>'); if (isAtEnd()) { throw error("unclosed name for capturing group"); } return groupExpr(); case ':': // Non-capturing group return groupExpr(); case '=': return new PositiveLookaheadMatcher(expr()); case '!': return new NegativeLookaheadMatcher(expr()); default: throw unsupported("inline flags"); } } else { return groupExpr(); } }
private Matcher group() { if (peek() == '?') { advance(); char c = advance(); switch (c) { case '<': // Named capturing group advance(v -> v != '>'); if (isAtEnd()) { throw error("unclosed name for capturing group"); } return groupExpr(); case ':': // Non-capturing group return groupExpr(); case '=': return new PositiveLookaheadMatcher(expr()); case '!': return new NegativeLookaheadMatcher(expr()); default: throw unsupported("inline flags"); } } else { return groupExpr(); } }