@Override protected void visit(RENode.Group expr) throws RuntimeException { if (expr.getType() == GroupType.CAPTURING_GROUP) { try { RERenderer renderer = new RERenderer(current.resolvingExpression); expr.accept(renderer); } catch (IOException e) { // Should not happen throw new AssertionError(e); } try { RERenderer renderer = new RERenderer(current.valueMatcher); expr.accept(renderer); } catch (IOException e) { // Should not happen throw new AssertionError(e); } current.prefix = current.buffer.toString(); current.buffer.setLength(0); } else { super.visit(expr); } }
protected void visit(RENode.Group expr) throws IOException { appendable.append(expr.getType().getOpen()); this.visit(expr.getDisjunction()); appendable.append(expr.getType().getClose()); if (expr.getQuantifier() != null) { expr.getQuantifier().toString(appendable); } }
@Override protected void visit(RENode.Group expr) throws RuntimeException { if (depth == 0) { // We collect all capturing top level capturing groups if (expr.getType() == GroupType.CAPTURING_GROUP) { groups.add(expr); } } else { // We make nested capturing group as non capturing if (expr.getType() == GroupType.CAPTURING_GROUP) { expr.setType(GroupType.NON_CAPTURING_GROUP); } } // depth++; super.visit(expr); depth--; } }
if (groups.size() == 1 && groups.get(0).getQuantifier() == null) { group.setType(GroupType.NON_CAPTURING_GROUP); RENode.Group group = new RENode.Group(disjunction1, GroupType.CAPTURING_GROUP); RENode.Alternative alternative1 = new RENode.Alternative(group); alternative.replaceBy(alternative1); disjunction.setAlternative( new RENode.Alternative( new RENode.Group( new RENode.Disjunction(), GroupType.CAPTURING_GROUP))); new RENode.Disjunction( new RENode.Alternative( new RENode.Group( new RENode.Disjunction(), GroupType.CAPTURING_GROUP))));
if (groups.size() == 1 && groups.get(0).getQuantifier() == null) { group.setType(GroupType.NON_CAPTURING_GROUP); RENode.Group group = new RENode.Group(disjunction1, GroupType.CAPTURING_GROUP); RENode.Alternative alternative1 = new RENode.Alternative(group); alternative.replaceBy(alternative1); disjunction.setAlternative( new RENode.Alternative( new RENode.Group( new RENode.Disjunction(), GroupType.CAPTURING_GROUP))); new RENode.Disjunction( new RENode.Alternative( new RENode.Group( new RENode.Disjunction(), GroupType.CAPTURING_GROUP))));
disjunction.clearNext(); RENode.Alternative group = new RENode.Alternative( new RENode.Group( new RENode.Disjunction(alternative, next), GroupType.CAPTURING_GROUP)); disjunction.setAlternative(group); new RENode.Group( new RENode.Disjunction(alternative), GroupType.CAPTURING_GROUP)); disjunction.setAlternative(group); disjunction.clearNext(); RENode.Alternative group = new RENode.Alternative( new RENode.Group( new RENode.Disjunction(next), GroupType.CAPTURING_GROUP)); disjunction.setAlternative(group); new RENode.Group( new RENode.Disjunction(), GroupType.CAPTURING_GROUP)); disjunction.setAlternative(group);
disjunction.clearNext(); RENode.Alternative group = new RENode.Alternative( new RENode.Group( new RENode.Disjunction(alternative, next), GroupType.CAPTURING_GROUP)); disjunction.setAlternative(group); new RENode.Group( new RENode.Disjunction(alternative), GroupType.CAPTURING_GROUP)); disjunction.setAlternative(group); disjunction.clearNext(); RENode.Alternative group = new RENode.Alternative( new RENode.Group( new RENode.Disjunction(next), GroupType.CAPTURING_GROUP)); disjunction.setAlternative(group); new RENode.Group( new RENode.Disjunction(), GroupType.CAPTURING_GROUP)); disjunction.setAlternative(group);
public RENode.Expr parseExpression() throws SyntaxException { RENode.Expr expr; if (lexer.next(Kind.BEGIN)) { expr = new RENode.Assertion.Begin(); } else if (lexer.next(Kind.END)) { expr = new RENode.Assertion.End(); } else if (lexer.next(Kind.GROUP_OPEN)) { GroupType groupType = GroupType.forPrefix(lexer.getToken()); RENode.Disjunction group = parseDisjunction(); if (lexer.next(Kind.GROUP_CLOSE)) { expr = new RENode.Group(group, groupType); } else { throw new SyntaxException("Group not closed "); } } else { expr = parseCharacter(); } if (expr != null) { Quantifier quantifier = parseQuantifier(); if (quantifier != null) { expr.setQuantifier(quantifier); } } return expr; }
public RENode.Expr parseExpression() throws SyntaxException { RENode.Expr expr; if (lexer.next(Kind.BEGIN)) { expr = new RENode.Assertion.Begin(); } else if (lexer.next(Kind.END)) { expr = new RENode.Assertion.End(); } else if (lexer.next(Kind.GROUP_OPEN)) { GroupType groupType = GroupType.forPrefix(lexer.getToken()); RENode.Disjunction group = parseDisjunction(); if (lexer.next(Kind.GROUP_CLOSE)) { expr = new RENode.Group(group, groupType); } else { throw new SyntaxException("Group not closed "); } } else { expr = parseCharacter(); } if (expr != null) { Quantifier quantifier = parseQuantifier(); if (quantifier != null) { expr.setQuantifier(quantifier); } } return expr; }
@Override protected void visit(RENode.Group expr) throws RuntimeException { if (expr.getType() == GroupType.CAPTURING_GROUP) { try { RERenderer renderer = new RERenderer(current.resolvingExpression); expr.accept(renderer); } catch (IOException e) { // Should not happen throw new AssertionError(e); } try { RERenderer renderer = new RERenderer(current.valueMatcher); expr.accept(renderer); } catch (IOException e) { // Should not happen throw new AssertionError(e); } current.prefix = current.buffer.toString(); current.buffer.setLength(0); } else { super.visit(expr); } }
@Override protected void visit(RENode.Group expr) throws RuntimeException { if (depth == 0) { // We collect all capturing top level capturing groups if (expr.getType() == GroupType.CAPTURING_GROUP) { groups.add(expr); } } else { // We make nested capturing group as non capturing if (expr.getType() == GroupType.CAPTURING_GROUP) { expr.setType(GroupType.NON_CAPTURING_GROUP); } } // depth++; super.visit(expr); depth--; } }
protected void visit(RENode.Group expr) throws E { RENode.Disjunction disjunction = expr.getDisjunction(); if (disjunction != null) { disjunction.accept(this); } }
protected void visit(RENode.Group expr) throws E { RENode.Disjunction disjunction = expr.getDisjunction(); if (disjunction != null) { disjunction.accept(this); } }
protected void visit(RENode.Group expr) throws IOException { appendable.append(expr.getType().getOpen()); this.visit(expr.getDisjunction()); appendable.append(expr.getType().getClose()); if (expr.getQuantifier() != null) { expr.getQuantifier().toString(appendable); } }