!7 srecord Did$HappenBefore$(O event1, O event2) {} srecord WhenDid$Happen(O event) {} srecord $HappensAtSecond$(O event, O y) {} sO parseArg(S s) { ret isInteger(s) ? parseInt(s) : s; } sO parse(S s) { ret defaultClassesAndPatterns().parse(s, if1 parseArg); } p-exp { testFunctionValues parse( "Did X happen before Y?" := Did$HappenBefore$("X", "Y"), "when did Z happen" := WhenDid$Happen("Z"), "{event 1} happens at second 100" := $HappensAtSecond$("event 1", 100) ); }