Generate a terminal rule for a range of characters. @param from lower bound @param to upper bound. @return rule
(char from, char to)
| 605 | * @return rule |
| 606 | */ |
| 607 | public CharTerminal<V> charRange(char from, char to) { |
| 608 | if ((int) from > (int) to) { throw error("Char range is illegal: [" + from + " to " + to + "]"); } |
| 609 | return new CharTerminal<>((ignoreCase) -> { |
| 610 | get().pushFrame("charRange(" + from + "," + to + ")"); |
| 611 | int n = get().nextChar(); |
| 612 | if (n >= 0) { |
| 613 | for (int i = from; i <= (int) to; i++) { |
| 614 | if (isCharMatch(ignoreCase, (char) n, (char) i)) { |
| 615 | return get().ruleReturn(true, true); |
| 616 | } |
| 617 | } |
| 618 | } |
| 619 | return get().ruleReturn(false, false); |
| 620 | }); |
| 621 | } |
| 622 | |
| 623 | /** |
| 624 | * Generate a rule for a specific string (char sequence) |