@Terminal(expression = "[0-9]+") protected int digit(int i) { return i; } @Terminal(expression = "[1-9]")
@Terminal(expression = "\\{Nd\\}|\\{IsNd\\}") protected int decimalDigitNumber() { return Character.DECIMAL_DIGIT_NUMBER; } @Terminal(expression = "\\{Me\\}|\\{IsMe\\}")
@Terminal(expression = "\\{Pe\\}|\\{IsPe\\}") protected int endPunctuation() { return Character.END_PUNCTUATION; } @Terminal(expression = "\\{Pf\\}|\\{IsPf\\}")
@Terminal(expression = "\\{Lm\\}|\\{IsLm\\}") protected int modifierLetter() { return Character.MODIFIER_LETTER; } @Terminal(expression = "\\{Sk\\}|\\{IsSk\\}")
@Terminal(expression = "\\{Co\\}|\\{IsCo\\}") protected int privateUse() { return Character.PRIVATE_USE; } @Terminal(expression = "\\{Zs\\}|\\{IsZs\\}")
@Terminal(expression = "\\{Zs\\}|\\{IsZs\\}") protected int spaceSeparator() { return Character.SPACE_SEPARATOR; } @Terminal(expression = "\\{Ps\\}|\\{IsPs\\}")
@Terminal(expression = "\\{Cn\\}|\\{IsCn\\}") protected int unassigned() { return Character.UNASSIGNED; } @Terminal(expression = "\\{Lu\\}|\\{IsLu\\}")
@Terminal(expression = "[a-zA-Z0-9_\\- ]+") protected String blockName(String blockName) { return blockName; } @Terminal(expression = "[^"+REGEXCONTROL+"]")
@Terminal(expression = "["+REGEXCONTROL+"]") protected int regexControlCharacter(char cc) { return cc; } @Terminal(expression = "t")
@Terminal(expression = "f") protected int ff() { return '\f'; } @Terminal(expression = "a")
@Terminal(expression = "[A-Z\\[\\]\\\\\\^_]") protected int control(char cc) { return cc - 'A' + 1; } public static class Literal
@Terminal(expression = "[a-zA-Z]") protected char character(char d) { return d; }
@Terminal(expression = "\\+") public void plus() { } @Terminal(expression = "0")
@Terminal(expression="d+") protected String td(String text) { return text; } @Terminal(expression="F+")
@Terminal(expression="h+") protected String th(String text) { return text; } @Terminal(expression="m+")
@Terminal(expression="s+") protected String ts(String text) { return text; } @Terminal(expression="S+")
@Terminal(expression = "[0-9]+\\.[0-9]+") protected double longitude(double lat) { double degrees = (double) Math.floor(lat / 100); double minutes = lat - 100F * degrees; double longitude = degrees + minutes / 60F; assert longitude >= 0; assert longitude <= 180; return longitude; }
@Terminal(expression = "\\{Blank\\}") protected RangeSet posixBlank() { RangeSet rs = new RangeSet(); rs.add(' '); rs.add('\t'); return rs; } @Terminal(expression = "\\{Cntrl\\}")
@Terminal(expression = "\\{Cntrl\\}") protected RangeSet posixCntrl() { RangeSet rs = new RangeSet(); rs.add(new Range(0, 0x20)); rs.add(0x7f); return rs; } @Terminal(expression = "\\{XDigit\\}")
@Terminal(expression = "\\{XDigit\\}") protected RangeSet posixXDigit() { RangeSet rs = new RangeSet(); rs.add(new Range('0', '9'+1)); rs.add(new Range('a', 'f'+1)); rs.add(new Range('A', 'F'+1)); return rs; } @Terminal(expression = "\\{Space\\}")