static int fullPhraseCache_longestPhraseLength(FullPhraseCache cache, LS tok) { ret fullPhraseCache_longestPhraseLength(cache, tok, 1); } // returns index of C token in tok after longest match static int fullPhraseCache_longestPhraseLength(FullPhraseCache cache, LS tok, int idx) { if (cache == null || tok == null) ret -1; int longest = -1; if (nempty(cache.phrases)) longest = idx; while (idx < l(tok)-1) { ifdef fullPhraseCache_longestPhraseLength_debug print("longest=" + longest + ", idx=" + idx + ", phrases=" + cache.phrases + ", next token= " + quote(tok.get(idx))); endifdef cache = mapGet(cache.byFirstWord, tok.get(idx)); if (cache == null) break; idx += 2; if (nempty(cache.phrases)) longest = idx; } ret longest; } static int fullPhraseCache_longestPhraseLength(FullPhraseCache cache, S s) { if (cache == null || s == null) ret -1; ret fullPhraseCache_longestPhraseLength(cache, javaTokNPunctuation_cached(s)); }