!7 sS data = [[ -- Rule What does a driver do? => He drives, dummie. -- Test What does a catcher do? => He catches, dummie. -- Helper Table driver, drive, drives, driving sleeper, sleep, sleeps, sleeping murderer, murder, murders, murdering catcher, catch, catches, catching ]]; p-exp { SS sections = minusSignSectionsCI(data); pnlStruct(sections); LPair rules = ai_findDoubleArrowRulesAsPairs(sections.get("Rule")); GazelleEvalContext ctx = gazelle_stdEvalContext(map(rules, func(PairS inOut) -> T3 { t3(joinPairWithDoubleArrow(inOut), "", aGlobalID()) })); //pnlStruct(ctx.engine.rules); RuleEngine2.Rule rule = first(ctx.engine.rules); rule.massageMap = func(SS map, LS tokC, LS tokI) -> SS { print("Massaging: " + map); ret map; }; LL helperTable = map splitAtComma(tlft(sections.get("Helper Table"))); //pnlStruct(helperTable); for (PairS inOut : ai_findDoubleArrowRulesAsPairs(sections.get("Test"))) { nlPrintNL(inOut.a); pnl(gazelle_getChildren(GazelleTree(ctx, inOut.a))); } }