static boolean match3(S pat, S s) { return match3(pat, s, null); } static boolean match3(S pat, S s, Matches matches) { if (pat == null || s == null) return false; ret match3(pat, parse3_cachedInput(s), matches); } static boolean match3(S pat, L toks, Matches matches) { L tokpat = parse3_cachedPattern(pat); ret match3(tokpat, toks, matches); } static boolean match3(L tokpat, L toks, Matches matches) { S[] m = match2(tokpat, toks); //print(structure(tokpat) + " on " + structure(toks) + " => " + structure(m)); if (m == null) false; if (matches != null) matches.m = m; true; }