scope gazelle_addVarConvertersToRules. sclass #VarConverter { S var1, var2; O converter; // func(S) -> S bool debug; *() {} *(S *var1, S *var2, O *converter, bool *debug) {} SS get(SS map, LS tokC, LS tokI, RuleEngine2_MatchedRule matched) { if (map == null) null; S value = map.get(var1); if (value == null) ret map; S value2 = (S) callAndMake_orF1(converter, value); if (debug) print("VarConverter: " + value + " => " + value2); if (!strictPutIC(map, var2, value2)) null; ret map; } } svoid gazelle_addVarConvertersToRules(RuleEngine2 engine, O... _) { bool debug = boolPar debug(_) || boolPar varConverterDebug(_); for (final RuleEngine2.Rule r : engine.rules) for (Matches m : getJMatches_all("convert var * to * with *", r.comments)) r.addMapMassager(new VarConverter($1, $2, $3, debug)); } end scope