!7 srecord ToParse(O text) {} srecord StarPattern(O text) {} cprint { transient new TransformersOnObjects too; switchable long maxSteps = 1000; start-thread { S ruleText = [[LineByUser("a * is something like *") => Assumption("* is a noun")]]; too.add(ToParse(ruleText)); // unpack ToParse too.addTransformer(func(ToParse x) { x.text }); too.addTransformer(f splitAtDoubleArrow_pair); too.addTransformer(f parseFunctionCall); too.addTransformer(f unquote); too.addTransformer(f pairA); too.addTransformer(f pairB); //too.addTransformer(f isStarPattern); // Suggest enclosing a star pattern string with StarPattern() too.addTransformer(func(S s) { isStarPattern(s) ? StarPattern(s) : null }); // Reintegrate replaced star patterns into rule text too.addTransformer(func(StarPattern s) { print("Found StarPattern: " + s); null; }); stepAllWithStats(too, maxSteps); too.printWithTrails(); } }