in jflex/src/main/java/jflex/core/RegExp.java [690:734]
public final void makeCCLs(CharClasses c, boolean caseless) {
RegExp1 unary;
RegExp2 binary;
RegExp content;
switch (type) {
case sym.BAR:
case sym.CONCAT:
binary = (RegExp2) this;
binary.r1.makeCCLs(c, caseless);
binary.r2.makeCCLs(c, caseless);
return;
case sym.STAR:
case sym.PLUS:
case sym.QUESTION:
case sym.BANG:
case sym.TILDE:
unary = (RegExp1) this;
content = (RegExp) unary.content;
content.makeCCLs(c, caseless);
return;
case sym.CHAR:
case sym.CHAR_I:
Integer ch = (Integer) ((RegExp1) this).content;
c.makeClass(ch, caseless);
return;
case sym.STRING:
case sym.STRING_I:
String str = (String) ((RegExp1) this).content;
c.makeClass(str, caseless);
return;
case sym.PRIMCLASS:
unary = (RegExp1) this;
IntCharSet set = (IntCharSet) unary.content;
c.makeClass(set, Options.jlex && caseless);
return;
default:
throw new CharClassException("makeCCLs: unexpected regexp " + this);
}
}