package ch.akuhn.hapax.corpus; import static java.lang.Character.isLetter; import static java.lang.Character.isLowerCase; import static java.lang.Character.isUpperCase; public class CamelCaseScanner extends TermScanner { @Override protected void scan() { while (true) { while (!isLetter(ch)) next(); this.mark(); if (isLowerCase(ch)) { next(); while (isLowerCase(ch)) next(); } else { next(); if (isLowerCase(ch)) { while (isLowerCase(ch)) next(); } else { while (isUpperCase(ch)) next(); if (isLowerCase(ch)) backtrack(); } } this.yank(); } } }