!7 /*sclass AppliedRules { new Set> appliedRules; // rule + arguments }*/ p-exp { S input = [[input contains $a && $a sounds like $b => ProposeInnerRewrite($a, $b)]]; new LinkedHashSet propositions; propositions.add(tok_groupRoundBrackets(input)); LS ops = map unquote(generalDefinition_rev("a binary operator")); printStruct(ops); while licensed { for (LS tok : cloneList(propositions)) for (S op : ops) { L tokOp = javaTok(op); L l = jfindAll(tok, tokOp); for (int i : l) { L newTok = ll( "", trimJoinSubList(tok, 0, i-1), " ", op, " ", trimJoinSubList(tok, i+l(tokOp)-2), ""); if (propositions.add(newTok)) print(op + " => " + sfu(newTok)); } } } }