@Override public Matcher rewrite(Function<Matcher, Matcher> f) { return f.apply(new PositiveLookaheadMatcher(matcher.rewrite(f))); }
@Override public Matcher rewriteEnd(Function<Matcher, Matcher> f) { return f.apply(new PositiveLookaheadMatcher(matcher.rewriteEnd(f))); }
@Override public Matcher rewrite(Function<Matcher, Matcher> f) { return f.apply(new PositiveLookaheadMatcher(matcher.rewrite(f))); }
@Override public Matcher rewriteEnd(Function<Matcher, Matcher> f) { return f.apply(new PositiveLookaheadMatcher(matcher.rewriteEnd(f))); }
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(); } }