static Triple ai_tripelize(S s) { L tok = nlTok(s); S a = get(tok, 1); if (a == null) null; if (ai_questionWord_1(a)) { tok = subList(tok, 2); a = get(tok, 1); } if (ai_yesNoQuestionWord_1(a) && neqicOneOf(a, "am", "are", "is")) { L tok2 = subList(tok, 2); int i = indexOfFirstVerb(tok2); S v = get(tok2, i); if (v != null) if (eqic(a, "does")) ret verbToThirdPerson(v) + "?"; else if (eqic(a, "do")) ret v + "?"; else if (eqic(a, "did")) ret verbToPast(v) + "?"; else ret a + " " + v + "?"; } if (isVerb(a)) ret triple( "", a + "?", ""); int i = ai_endOfNounPhrase(tok); int j = indexOfFirstVerb(tok2, i); ret triple( trimJoinSubList(tok, 0, j), tok.get(j), trimJoinSubList(tok, j+2)); }