in jflex/src/main/java/jflex/core/RegExp.java [741:793]
public final RegExp rev() {
RegExp1 unary;
RegExp2 binary;
RegExp content;
switch (type) {
case sym.BAR:
binary = (RegExp2) this;
return new RegExp2(sym.BAR, binary.r1.rev(), binary.r2.rev());
case sym.CONCAT:
binary = (RegExp2) this;
return new RegExp2(sym.CONCAT, binary.r2.rev(), binary.r1.rev());
case sym.STAR:
unary = (RegExp1) this;
content = (RegExp) unary.content;
return new RegExp1(sym.STAR, content.rev());
case sym.PLUS:
unary = (RegExp1) this;
content = (RegExp) unary.content;
return new RegExp1(sym.PLUS, content.rev());
case sym.QUESTION:
unary = (RegExp1) this;
content = (RegExp) unary.content;
return new RegExp1(sym.QUESTION, content.rev());
case sym.BANG:
unary = (RegExp1) this;
content = (RegExp) unary.content;
return new RegExp1(sym.BANG, content.rev());
case sym.TILDE:
content = resolveTilde();
return content.rev();
case sym.STRING:
case sym.STRING_I:
unary = (RegExp1) this;
return new RegExp1(unary.type, revString((String) unary.content));
case sym.CHAR:
case sym.CHAR_I:
case sym.PRIMCLASS:
unary = (RegExp1) this;
return new RegExp1(unary.type, unary.content);
default:
throw new RegExpException(this);
}
}