public void distribute() { distribute(dfa.getRoot(), dfa.initialSize()); } private void distribute(DFAState<T> state, int rootCount)
if (ddfa.initialSize() > maxStates)
protected void compile() throws IOException, NoSuchMethodException if (dfa.initialSize() > MAXSTATESUSEWIDE) fixAddress("eof"); eof(); dfaCount += dfa.initialSize(); byteCount += position();
@Override public void implement() throws IOException { if (!Typ.isSameType(tokenType, getReturnType())) { throw new IllegalArgumentException(tokenType+" is not expected return type "+getReturnType()+" of method"); } if (dfa.initialSize() > MAXSTATES) { SubClass subClass = getSubClass(); DFADistributor<T> dd = new DFADistributor<>(dfa, MAXSTATES); dd.distribute(); for (DFA<T> ddfa : dd.getDistributedDFAs()) { String subName = jav.makeJavaIdentifier(getMethodDescription()+ddfa.name()); ExecutableElement distributedMethod = getDistributedMethod(subName); DFACompiler<T> sc = copy(ddfa); sc.setSubCompiler(true); subClass.defineMethod(sc, distributedMethod); } } try { compile(); } catch (NoSuchMethodException ex) { throw new IOException(ex); } }