!7 srecord Did$HappenBefore$(O event1, O event2) {} srecord WhenDid$Happen(O event) {} srecord $HappensAtSecond$(O event, O y) {} static ClassesAndPatterns classes; sO parseArg(S s) { ret isInteger(s) ? parseInt(s) : s; } sO parse (S s) { ret classes.parse(s, lambda1 parseArg); } sS unparse (O o) { ret classes.unparse(o); } p-exp { classes = new ClassesAndPatterns(myRecordClasses(), mc()); pnl(classes.entries); for (S s : ll( "Did X happen before Y", "when did Z happen", "{event 1} happens at second 100")) assertEqualsICVerbose(s, print("> ", unparse(parse(s)))); }